我面临一个奇怪的问题。我正在创建连接到Sqlite数据库的Qt 4代码 使用:
QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
db.setDatabaseName("sb.sqlite");
bool db_ok = db.open();
当我从Qt Creator执行代码或直接从release文件夹执行代码时,我能够连接到数据库但是当我将release文件夹(包括数据库文件)复制到另一台机器时,我无法连接某种原因。
我还尝试使用数据库文件的完整路径:
db.setDatabaseName("C://release//sb.sqlite");
答案 0 :(得分:2)
两件事:
首先:
在写出路径时,您需要使用转义反斜杠:\\
或使用正斜杠:/
试图在Qt中逃避正斜杠,可能会给你带来麻烦。
第二
部署Qt App时,需要提供所有必需的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 ()
查看正在发生的事情。
希望有所帮助。