函数sqlite3_open_v2文件路径

adm*_*adm 5 c++ sqlite qt

我有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中的filepath.绝对路径也不起作用.

有人有任何想法和使用此功能的例外吗?

adm*_*adm 5

谢谢你的回答.

问题是最后一个参数.它必须是0或NULL而不是""

这就是全部,无论如何,谢谢


Did*_*zia 4

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

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

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

sqlite3_open_v2("database.db", &db, SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, NULL );
Run Code Online (Sandbox Code Playgroud)

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