Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
iphone上的sqlite可以打开db,但不能准备语句_Iphone_Sqlite - Fatal编程技术网

iphone上的sqlite可以打开db,但不能准备语句

iphone上的sqlite可以打开db,但不能准备语句,iphone,sqlite,Iphone,Sqlite,我是使用sqlite的新手,所以我可能错过了一些基本的东西 我已经创建了一个数据库并将其复制到我的应用程序的文档目录中。我可以打开它,但当我调用sqlite3\u prepare\u v2时,我收到SQLITE\u错误,“SQL错误或缺少数据库” 这是我的密码: sqlite3 *database; if(sqlite3_open([dbPath UTF8String], &database) == SQLITE_OK) { sqlite3_stmt *compiledStatem

我是使用sqlite的新手,所以我可能错过了一些基本的东西

我已经创建了一个数据库并将其复制到我的应用程序的文档目录中。我可以打开它,但当我调用sqlite3\u prepare\u v2时,我收到SQLITE\u错误,“SQL错误或缺少数据库”

这是我的密码:

sqlite3 *database;
if(sqlite3_open([dbPath UTF8String], &database) == SQLITE_OK) 
{
  sqlite3_stmt *compiledStatement;
  NSString *sqlStatement = @"select * from dbname";
  int result = sqlite3_prepare_v2(database, [sqlStatement UTF8String], -1, &compiledStatement, nil);
  ...
}
相同的sql语句在终端中工作

我在一些地方发现了这个问题,要么没有答案,要么解决不了我的问题。我希望这里有人能帮忙。谢谢

编辑:


使用Firefox的SQLite管理器使其正常工作,这是通过终端创建的数据库文件出现问题。

由于您使用的是
SQLite 3\u open
,如果在
dbPath
中的给定位置尚未存在新的空数据库,则会自动创建该数据库。如果改为使用
sqlite3\u open\u v2
,则可以控制它只打开现有数据库,而不是在缺少数据库时创建数据库。只需在第三个参数中传递标志
SQLITE\u OPEN\u READWRITE

如果数据库没有按预期复制到applications documents文件夹中,则后一种方法应该能够捕捉到这一点

希望这有帮助


克劳斯

dbPath的作用是什么?dbPath是应用程序文档区域中的sqlite数据库文件的路径。谢谢,我打赌是这样的,它可能打开了一个新的数据库而不是我的sqlite文件。