5

我对 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 中的文件路径。绝对路径也不起作用。

有人对使用此功能有任何想法和示例吗?

4

2 回答 2

6

感谢您的回答。

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

就这些了,还是谢谢

于 2012-05-28T21:36:02.887 回答
4

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

sqlite3_open 和带有 SQLITE_OPEN_READWRITE 的 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

于 2012-05-28T11:50:39.163 回答