iOS SQLite:插入语句失败,无法理解原因

时间:2012-07-30 11:57:23

标签: ios sqlite insert

所以我可以使用第一个表的以下语句创建没有问题的数据库:

     const char *sqlStatement = "CREATE TABLE IF NOT EXISTS LIBRARY_SEARCH (SEARCH_ID INTEGER PRIMARY KEY AUTOINCREMENT, SEARCH_TERM TEXT)";

但是当我去插入一行时它会失败。这是我插入行的方式。

NSString *insertStatement = [NSString stringWithFormat:@"INSERT INTO LIBRARY_SEARCH(SEARCH_TERM) VALUES (\"%@\")", myQuery] ;

myQuery是一个NSString,它在应用程序中保存searchBar.text的值。这是一个属性,当然是合成的。

所以我称之为:

     if ( sqlite3_exec(searchSessionDB, [insertStatement UTF8String], NULL, NULL, &insert_error) == SQLITE_OK)

哪个失败了。谁能明白为什么?

3 个答案:

答案 0 :(得分:4)

知道了。在我的开放数据库声明中写了一个小错字。

对于将来看这个的人来说,这就是开场陈述现在的样子(并且它运作正常!):

if(sqlite3_open(dbpath, &searchSessionDB) = SQLITE_OK){

感谢Robert Ryan建议这个NSLog:

NSLog(@"%s", sqlite3_errmsg(searchSessionDB));

感谢Elpsk和H2CO3提供包装/应用包信息。

答案 1 :(得分:2)

我建议您使用FMDB查询您的数据库。

它是 sqlite 的包装,易于使用且易于使用所有错误都得到了更好的解释

答案 2 :(得分:2)

我确定您正在尝试更新位于应用包中的SQLite数据库。你不能:你不能写你的应用程序自己的捆绑。将数据库文件复制到应用程序沙箱的文档或库目录中。

其他:如果您正在寻找OO SQLite包装器,请查看mine