0

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

     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)

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

4

3 回答 3

4

知道了。在我的开放数据库语句中做了一个小错字。

对于将来看到这个的人来说,这就是开场白现在的样子(而且效果很好!):

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

感谢 Robert Ryan 建议这个 NSLog:

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

并感谢 Elpsk 和 H2CO3 提供包装器/应用程序包信息。

于 2012-07-30T12:21:34.237 回答
2

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

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

于 2012-07-30T12:00:55.860 回答
2

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

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

于 2012-07-30T12:04:02.773 回答