【发布时间】:2011-07-05 09:29:06
【问题描述】:
我已经在这工作了好几个小时,必须让这个工作正常进行!它阻止了 iPhone 应用程序的发布……我第一次使用 SQLite。我已经听从了所有建议,但我的 sqlite3_prepare_v2 调用每次都会收到 SQLITE_ERROR (1)!
这是我的控制器中的代码:
NSString *query = @"SELECT * FROM QandA ORDER BY random() LIMIT 1";
// const char *sqlStatement = "SELECT * FROM QandA ORDER BY random() LIMIT 1";
sqlite3_stmt *compiledStatement;
// sqlite3_stmt *statement;
int prepareStatus = sqlite3_prepare_v2(database, [query UTF8String],
-1, &compiledStatement, NULL);
if (prepareStatus == SQLITE_OK) {...
您会注意到我尝试使用“char *”也无济于事(在其他尝试中)。我的数据库可以正常打开:
databaseName = @"Facts.sqlite";
// Get the path to the documents directory and append the databaseName
NSArray *documentPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDir = [documentPaths objectAtIndex:0];
databasePath = [documentsDir stringByAppendingPathComponent:databaseName];
NSLog(@"databasePath = %@", databasePath);
int dbOpenStatus = sqlite3_open_v2([databasePath UTF8String], &database, SQLITE_OPEN_READWRITE, NULL);
从我的控制器界面:
NSString *databaseName;
NSString *databasePath;
我已经检查了调试器,一切看起来都很好,但是准备语句失败了。我不知道如何记录它试图编译的语句......我假设/希望这正是我的 SELECT 所说的。
有人可以帮忙吗?我很绝望。标记
【问题讨论】:
-
如果你想在 Objective-C 中访问 SQLite 数据库,我建议使用 fmdb,github.com/ccgus/fmdb
-
好的,(终于)知道了如何获得更详细的错误信息。准备调用的错误是“没有这样的表:myTableName”。它在那里,我还记录了 MyDb.sqlite 文件的完整路径。表就是报错中显示的名字,为什么会这样呢?!
-
查看了 FMDB,以后会考虑。谢谢。
-
@mark;如果您展示了如何获取更详细的错误消息,将会对其他人有所帮助
标签: objective-c xcode sqlite