iOS,SQLite:无法从数据库中读取

iOS,SQLite:无法从数据库中读取,ios,sqlite,Ios,Sqlite,我有一个SQLite数据库,我可以用SQLite浏览器打开它,执行对它的查询等等。但是我不能在我的Xcode项目中从它获取任何数据 NSString *databaseName = @"dbFile.db"; NSArray *documentPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSString *documentsDir = [documentPaths

我有一个SQLite数据库,我可以用SQLite浏览器打开它,执行对它的查询等等。但是我不能在我的Xcode项目中从它获取任何数据

NSString *databaseName = @"dbFile.db";
NSArray *documentPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDir = [documentPaths objectAtIndex:0];
NSString *databasePath = [documentsDir stringByAppendingPathComponent:databaseName];
sqlite3 *database;

if(sqlite3_open([databasePath UTF8String], &database) == SQLITE_OK) {
    NSLog(@"db is ok"); // works just fine
    const char *sqlStatement = "SELECT table.column FROM table";
    sqlite3_stmt *compiledStatement;

    if(sqlite3_prepare_v2(database, sqlStatement, -1, &compiledStatement, NULL) == SQLITE_OK) {
        NSLog(@"OK"); // nothing happens
    }
    sqlite3_close(database);
}

从SQLite browser for Mac执行的相同查询工作正常。

SQLite 3\u open在开始访问数据之前不会报告所有错误。例如,几乎任何文件名和路径都将无错误地传递

您确定数据库在Documents文件夹中吗?默认情况下它不在那里。 也许它在主包里

试一试
NSString*databaseName=[[NSBundle mainBundle]pathForResource:@dbFile of type:@db]

您应该检查并记录sqlite报告的错误-它们可能会告诉您出了什么问题。@ufw:这行吗?从表中选择col,也就是说,在列名前面没有表名?在这两种情况下,SQLite日志都表示找不到合适的表。但是,正如我之前所说,我可以通过独立的SQLite浏览器获取数据。您已经准备好了语句。现在用sqlite3_步骤执行它怎么样?无论如何,我不能这样做,因为在清单中的第二个if中出现了问题。如果指定路径中没有DB,则会创建一个新的空DB。因此,在打开检查是否存在之前,可能必须将资源目录中的只读数据库复制到doc目录。