指点成金-最美分享吧

登录

函数 sqlite3_open_v2 文件路径

佚名 举报

技术标签:

【中文标题】函数 sqlite3_open_v2 文件路径【英文标题】:Function sqlite3_open_v2 filepath 【发布时间】:2012-05-27 17:11:02 【问题描述】:

我对 sqlite3_open_v2 函数有疑问。操作系统是 Windows,在 Qt Creator 中开发。

sqlite3_open("database.db", &db); // works fine

但是

sqlite3_open_v2("database.db", &db, SQLITE_OPEN_READWRITE, ""); // don"t work

我很确定这不是 utf-8 编码问题,因为第一个函数工作正常,我尝试更改项目属性中的编码。也许问题出在第一个 arg 中的文件路径。绝对路径也不起作用。

有人知道使用这个功能的想法和例子吗?

【问题讨论】:

错误是什么?模式应该是像“rw”这样的字符串 没有错误。编译没问题,但是函数返回码总是SQLITE_ERROR,所以找不到database。 【参考方案1】:

感谢您的回答。

问题出在最后一个参数上。它必须是 0 或 NULL 而不是 ""

就这些了,谢谢

【讨论】:

【参考方案2】:

这可能是因为工作目录中不存在该文件。在调用 sqlite3_open_v2 之前,我会添加一些代码来打印当前工作目录的路径。

带有 SQLITE_OPEN_READWRITE 的 sqlite3_open 和 sqlite3_open_v2 之间的一个区别是第一个将在找不到文件时创建一个空数据库,而第二个则不会。

为了允许使用 sqlite3_open_v2 创建数据库,您应该使用:

sqlite3_open_v2("database.db", &db, SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, NULL );

请务必查看文档以获取更多信息:http://www.sqlite.org/c3ref/open.html

【讨论】:

以上是关于函数 sqlite3_open_v2 文件路径的主要内容,如果未能解决你的问题,请参考以下文章