2011-07-18 86 views
0

我的问题是,我有一个计划与一些SQL语句工作SQLITE3命令不执行

const char *sqlStatement = "SELECT lastPlayed FROM Settings;"; 
    sqlite3_stmt *compiledStatement; 
    if(sqlite3_prepare_v2(database, sqlStatement, -1, &compiledStatement, NULL) != SQLITE_OK) { 
     NSLog(@"database error"); 
    } 
    if(sqlite3_step(compiledStatement) == SQLITE_ROW){ 
... 
    }  

我的问题是,这个SQL命令将写入的NSLog该数据库错误,它赢得”吨进入我的身体,如果与声明一起工作......如果我更改sql语句以从Session LIMIT中选择名称? ,?并绑定这两个数字,它会工作得很好。我在sqlite管理器中测试了sql命令并且工作得很好......有帮助吗?可能是什么问题呢?

Update1:​​发现它说,没有这样的表格:即使我有它的设置...也许这是xCode的问题?它不会更新模拟器?

Update2解决:问题的根源在模拟器....我不得不删除缓存... thx快速回答。

回答

0
  1. 使用sqlite3_errmsg API函数获取错误消息并将其打印到日志。这会告诉你问题是什么。
  2. 您在语句中不需要;,因为它只是告诉sqlite3_prepate_v2忽略它后面的任何内容(它会返回指向它在最后一个参数结束位置以便于运行SQL脚本的位置),但这不会导致问题。