0

我面临一个奇怪的问题。我正在使用以下方法创建连接到 Sqlite 数据库的 Qt 4 代码:

QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
db.setDatabaseName("sb.sqlite");
bool db_ok = db.open();

当我从 Qt Creator 或直接从发布文件夹执行代码时,我能够连接到数据库,但是当我将发布文件夹(包括数据库文件)复制到另一台机器时,由于某种原因我无法连接。

我还尝试使用数据库文件的完整路径:

db.setDatabaseName("C://release//sb.sqlite");
4

1 回答 1

2

两件事情:

第一的:

写出路径时,您需要使用转义的反斜杠:\\或使用正斜杠:/

试图在 Qt 中转义正斜杠可能会给您带来问题。

第二:

部署 Qt 应用程序时,所有必要的 Qt 模块都需要可用,以及您需要的 Qt 插件。

Qt 插件只会导致缺少运行时函数,而缺少 Qt 模块会导致加载时立即崩溃。

下面的线程应该解决您看到的问题:

http://qt-project.org/forums/viewthread/21518

只需将 sqlite4.dll 放在可执行文件旁边的 sqldrivers 文件夹中

http://qt-project.org/doc/qt-4.8/qcoreapplication.html#libraryPaths

除了查看应该在控制台中弹出的运行时调试信息之外,您还可以在代码中添加这样的调用:

bool QSqlDatabase::isValid ()

还可以查看有关 的文档db.open(),您也可以致电QSqlError QSqlDatabase::lastError ()查看发生了什么。

希望有帮助。

于 2013-06-24T02:50:36.083 回答