【发布时间】:2023-03-14 05:44:01
【问题描述】:
有一个 sqlite 问题。该查询在 Firefox 插件 SQLiteManager 上运行良好。但是它不能在 iOS 上运行。我收到错误代码 1。数据库连接正常。
NSString *sqLiteDb = [[NSBundle mainBundle] pathForResource:@"featureDB"
ofType:@"sqlite3"];
if (sqlite3_open([sqLiteDb UTF8String], &_database) != SQLITE_OK) {
DLog(@"Failed to open database!");
} else {
DLog(@"Connected to db");
}
NSString *query = [NSString stringWithFormat:@"SELECT * FROM featureTable"];
sqlite3_stmt *statement;
NSLog(@"could not prepare statement: %s\n", sqlite3_errmsg(_database));
if (sqlite3_prepare_v2(_database, [query UTF8String], -1, &statement, nil) == SQLITE_OK) {
while (sqlite3_step(statement) == SQLITE_ROW) {
DLog(@"row");
int uniqueId = sqlite3_column_int(statement, 0);
}
sqlite3_finalize(statement);
DLog(@"sqliteStep");
} else {
DLog(@"statement Error %d", sqlite3_prepare_v2(_database, [query UTF8String], -1, &statement, nil));
}
“row 或 sqliteStep”的日志永远不会触发。
【问题讨论】:
-
那么生成的错误信息是什么? (提示,阅读规范。)
-
顺便说一下,如果你从包中打开数据库,它是只读的。这是你的意图吗?通常,应用程序会在文档文件夹中查找 db,并且只有在没有找到的情况下,应用程序才会将其从捆绑包复制到文档文件夹。见stackoverflow.com/a/26325358/1271826。这不是您上述例程中的问题,只是仅供参考。
标签: ios sql objective-c sqlite