SQLite3 - 乱序调用的库例程
Posted
技术标签:
【中文标题】SQLite3 - 乱序调用的库例程【英文标题】:SQLite3 - Library routine called out of sequence 【发布时间】:2011-04-02 13:55:22 【问题描述】:为 SQLite3 db-selecct 查询运行以下准备语句时,我收到 SQLLite 错误 21“Library routine called out of sequence”:
sqlite3 *lDb;
sqlite3_stmt *lStmt;
NSNumberFormatter *lNbrFmt = [[[NSNumberFormatter alloc] init] autorelease];
// Define SQL statement
NSString *lSql = @"SELECT section, language, title, description"
@" selector-x-pos, selector-y-pos, gps-x-pos, gps-y-pos"
@" FROM sections"
@" ORDER BY section ASC";
lSqlResult = sqlite3_prepare_v2(lDb, [lSql UTF8String], -1, &lStmt, NULL);
NSLog(@"%@", [NSString stringWithUTF8String:sqlite3_errmsg(lDb)]);
我做错了什么?
【问题讨论】:
恭喜你搞定了!您能否重新格式化遗留问题和答案,以便将来的访问者可以轻松解决相同的错误?如果没有,您应该完全删除该问题。谢谢! 不用担心,只是编辑它... 【参考方案1】:经过进一步调查,我发现了我的错误。我应该在运行 prep 语句之前先打开数据库。
代码应如下所示:
sqlite3 *lDb;
sqlite3_stmt *lStmt;
NSNumberFormatter *lNbrFmt = [[[NSNumberFormatter alloc] init] autorelease];
// Define SQL statement
NSString *lSql = @"SELECT section, language, title, description"
@" selector-x-pos, selector-y-pos, gps-x-pos, gps-y-pos"
@" FROM sections"
@" ORDER BY section ASC";
if(sqlite3_open([[fileMethods databasePath] UTF8String], &lDb) == SQLITE_OK)
lSqlResult = sqlite3_prepare_v2(lDb, [lSql UTF8String], -1, &lStmt, NULL);
NSLog(@"%@", [NSString stringWithUTF8String:sqlite3_errmsg(lDb)]);
...
【讨论】:
“库例程调用乱序” - 或者检查您没有在其他地方打开相同的数据库。感谢您的指点;)以上是关于SQLite3 - 乱序调用的库例程的主要内容,如果未能解决你的问题,请参考以下文章
SQLite第六课 sqlite3_prepare函数调用异常分析