所以我可以使用第一个表的以下语句创建没有问题的数据库:
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)
哪个失败了。谁能明白为什么?
答案 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。