我想以READONLY方式打开数据库:
exit = sqlite3_open_v2( "database.db?immutable=1" , &db_ , SQLITE_OPEN_READONLY | SQLITE_OPEN_URI , nullptr );
但我收到错误消息:SQLITE_CANTOPEN,知道为什么吗?
如果我这样打开,则打开成功:
exit = sqlite3_open( "database.db" , &db_ );
使用SQLITE_OPEN_URI
“文件名可以解释为URI”时。但是,要将其视为URI,必须以开头file:
,否则将被视为普通文件名。
因此,您正在尝试打开一个名为的文件database.db?immutable=1
,该文件显然不存在。请注意,SQLITE_OPEN_READONLY
“如果数据库尚不存在,则返回错误”。因此,最简单的解决方法就是将字符串设为file:database.db?immutable=1
。
但是,我建议您仅使用一种提供特殊选项的方法。使用该SQLITE_OPEN_URI
标志,然后将所有其他选项放入URI中,如下所示:file:database.db?mode=ro&immutable=1
。
(我意识到并不是所有的选项组合都只能通过一种方法实现,但就您而言,是这样,所以我说坚持一个,那么您就不必担心不同方法之间的交互方式了)。
SQLite有大量的文档,您可以在此处阅读有关打开数据库的所有信息。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句