sqlite の準備ステートメントに問題があります。複数の場所でチェックインしたにもかかわらず、テーブルが存在しないというエラーが表示され、テーブルが存在するため、混乱しています。
- ファイルは正しいiPhone Simulator Applicationフォルダーにあります
- ファイルがプロジェクトに追加され、プロジェクト ナビゲーターで表示可能になります
- それは私のビルド段階にもあります-バンドルリソースのコピーエリア。
- 掃除をしてまた走り始めました。
データベースが存在し、SQL ステートメントを実行すると、期待どおりの結果が得られます。
- (NSMutableArray *) getMyWorkout{ NSMutableArray *workoutArray = [[NSMutableArray alloc] init]; @try { NSFileManager *fileMgr = [NSFileManager defaultManager]; NSString *dbPath = [[[NSBundle mainBundle] resourcePath ]stringByAppendingPathComponent:@"IOSDB.sqlite"]; NSLog(@"Db path is %@",dbPath); BOOL success = [fileMgr fileExistsAtPath:dbPath]; if(!success) { NSLog(@"Cannot locate database file '%@'.", dbPath); } if(!(sqlite3_open([dbPath UTF8String], &db) == SQLITE_OK)){ sqlite3_close(db); NSLog(@"Failed to open database with message '%s'.", sqlite3_errmsg(db)); } const char *sql = "SELECT Id, type, difficulty, duration, description FROM workoutTbl"; sqlite3_stmt *sqlStatement; if(sqlite3_prepare(db, sql, -1, &sqlStatement, NULL) != SQLITE_OK){ NSLog(@"%s Prepare failure '%s' (%1d)", __FUNCTION__, sqlite3_errmsg(db), sqlite3_errcode(db)); } //...
実行すると、ファイルパスと次のエラーが表示されます
2013-02-01 18:07:08.060 TriShake[9251:c07] -[MyWorkoutList getMyWorkout] Prepare failure 'no such table: workoutTbl' (1)
これらの他の質問をチェックアウトしましたが、解決策を見つけることができませんでした
データベースパスが存在しない場合、 sqlite3_open() が空のデータベースを作成することは理解していますが、存在することはわかっているため、フラストレーションが生じます。あなたが私に与えることができるどんな助けや指導も大歓迎です.