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 - 乱序调用的库例程的主要内容,如果未能解决你的问题,请参考以下文章

交叉编译SQLite3

Sqlite3 奇怪的行为

SQLite第六课 sqlite3_prepare函数调用异常分析

SQLite3+Qt开发SQLite3简要介绍+在Qt5中的使用步骤

SQlite3 的简单用法。 调用本地时间

无法为类型“sqlite3_destructor_type”调用初始化程序