我的 sqlite 准备语句遇到了一些困难。我收到一条错误消息,说我的表不存在,尽管我已经在多个地方检查过它,它确实存在,所以我很困惑。
- 该文件位于正确的 iPhone 模拟器应用程序文件夹中
- 该文件已添加到我的项目中,并可在项目导航器中查看
- 它也在我的构建阶段——复制捆绑资源区域。
- 我已经清理干净并再次开始跑步。
数据库存在并且运行我的 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() 会为您创建一个空数据库,但我知道它存在,所以随之而来的是挫败感。您能给我的任何帮助或指导将不胜感激。