技术标签:
【中文标题】函数 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 文件路径的主要内容,如果未能解决你的问题,请参考以下文章