データベースからデータを読み込む iOS アプリの機能があります。関数は非常に単純です。
-(void) readCategories {
sqlite3 *database;
if([[NSFileManager defaultManager] fileExistsAtPath:databasePath]){
if(sqlite3_open([databasePath UTF8String], &database) == SQLITE_OK) {
const char *sqlStatement = "SELECT * FROM Categories ORDER BY name COLLATE NOCASE ASC";
sqlite3_stmt *compiledStatement;
int errorCode = sqlite3_prepare_v2(database, sqlStatement, -1, &compiledStatement, NULL);
if(errorCode == SQLITE_OK) {
while(sqlite3_step(compiledStatement) == SQLITE_ROW) {
[categories addObject:[NSString stringWithUTF8String:(char *)sqlite3_column_text(compiledStatement, 1)]];
}
} else {
NSLog(@"Error reading categories. Code: %d, message: '%s'", errorCode,sqlite3_errmsg(database));
}
sqlite3_finalize(compiledStatement);
sqlite3_close(database);
} else {
NSLog(@"Error opening DB");
}
} else {
NSLog(@"DB does not exist.");
}
}
問題は、errorCode が常に SQLITE_ERROR であることです。ドキュメントによると、「SQL エラーまたはデータベースがありません」です。与えられたメッセージは次のとおりです:「そのようなテーブルはありません: カテゴリ」
今、自分のコンピューター上のデータベース ファイルを見ると、テーブルが明らかに存在しています。まったく同じクエリを実行することもでき、正しく動作します。
誰が何がうまくいかないのかについて何か考えを持っていますか?
ありがとう。