sqlite3データベースを作成し、テーブルを作成してデータを挿入しました。ターミナルアプリケーションを使用してselectクエリを使用して取得できます。Sqlite3はiPhoneで「このようなテーブルはありません」というエラーを返します
しかし、私は私のiPhoneのアプリケーションのリソースにこのデータベースを追加し、データへのアクセスにしようとすると、プログラムで、私はとしてエラーが出る「いいえ、そのようなテーブル:テーブル名」
は、なぜこれが起こるのでしょうか?
sqlite3データベースを作成し、テーブルを作成してデータを挿入しました。ターミナルアプリケーションを使用してselectクエリを使用して取得できます。Sqlite3はiPhoneで「このようなテーブルはありません」というエラーを返します
しかし、私は私のiPhoneのアプリケーションのリソースにこのデータベースを追加し、データへのアクセスにしようとすると、プログラムで、私はとしてエラーが出る「いいえ、そのようなテーブル:テーブル名」
は、なぜこれが起こるのでしょうか?
DBファイルはおそらくiPhoneから到達できません。 iPhoneアプリケーション自体からDBを作成してみてください。
NSArray *paths = NSSearchPathForDirectoriesInDomains(
NSDocumentDirectory, NSUserDomainMask, YES
);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *path = [
documentsDirectory stringByAppendingPathComponent:@"yourdbname.sql"
];
// Open the database. The database was prepared outside the application.
if (sqlite3_open([path UTF8String], &db_handle) != SQLITE_OK) {
// Even though the open failed,
// call close to properly clean up resources.
sqlite3_close(db_handle);
NSAssert1(0,
@"Failed to open database with message '%s'.",
sqlite3_errmsg(db_handle)
);
}
さらにクエリを実行します。また、DBアクセスコードのあらゆるステップで潜在的なエラーをチェックすると役立ちます。
データベースパスが存在しない場合、sqlite3_open()は空のデータベースを作成します。したがって、あなたが与えたパスがあなたを意図されたファイルに導かない可能性があります。空のデータベースを使用すると、「そのようなテーブルはありません」ということになります。
私たちは何ができるのですか? –
この問題を解決するにはどのようなアイデアがありますか – Singapore
sqlite3X C++ラッパーで同じエラーが発生しました。 私はIEのプラグインでこのライブラリを使用しています。 問題は.sqliteベースでは使用できませんでした。 IEの現在のディレクトリ(プラグインではない)は "C:\ Documents and Settings \ UserName \ desktop \"です。 私はこの場所に拠点を置くと、問題は解決しました。
詳細情報が必要な場合 - いくつかのコードが役に立ちます。 – cofiem
いくつかのコードを提供できますか? –
私も同じ問題に直面しています – Singapore