我正在使用VS2008和QT插件来制作我的应用程序。在我运行应用程序时创建包后,我收到错误:
QSqlDatabase: QSQLITE driver not loaded
QSqlDatabase: available drivers:
Database error: QSqlError(-1, "Driver not loaded", "Driver not loaded")
QSqlError(-1, "Driver not loaded", "Driver not loaded")
我已将qsqlite.dll添加到我的包中并且还更改了libpath。但我仍然得到这个错误。怎么解决这个问题。
我的代码::
QStringList str;
str.append(".");
a.setLibraryPaths(str);
a.addLibraryPath("./sqldrivers/");
//a.addLibraryPath(".");
qDebug()<<"my library path : "<<a.libraryPaths();
QLibrary sqlib("qsqlite4.dll");
sqlib.load();
qDebug()<<"my library loaded"<<sqlib.isLoaded();
QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
qDebug()<<"Database error:"<<db.lastError();
db.setDatabaseName("vimukti1234");
qDebug()<< db.lastError();
db.open();
QSqlQuery query;
驱动程序需要放在“sqldrivers”下,而不是放在与可执行文件相同的目录中(它们在运行时加载,Qt在“sqldrivers”中查找它们)。我们安装的应用程序的典型结构如下:
.:
total 26616
-rwxr-xr-x 1 root root 2245632 Sep 29 03:53 AlvaEditor.exe
-rwxr-xr-x 1 root root 2335232 Sep 29 03:53 QtCore4.dll
-rwxr-xr-x 1 root root 8421376 Sep 29 03:53 QtGui4.dll
-rwxr-xr-x 1 root root 199168 Sep 29 03:53 QtSql4.dll
-rwxr-xr-x 1 root root 306688 Sep 29 03:53 libctemplate.dll
-rwxr-xr-x 1 root root 26624 Sep 29 03:53 qgif4.dll
-rwxr-xr-x 1 root root 28672 Sep 29 03:53 qico4.dll
-rwxr-xr-x 1 root root 200704 Sep 29 03:53 qjpeg4.dll
-rwxr-xr-x 1 root root 222720 Sep 29 03:53 qmng4.dll
-rwxr-xr-x 1 root root 439808 Sep 29 03:53 qsqlite4.dll
-rwxr-xr-x 1 root root 21504 Sep 29 03:53 qsvg4.dll
-rwxr-xr-x 1 root root 287232 Sep 29 03:53 qtiff4.dll
drwxr-xr-x 2 root root 4096 Sep 29 03:53 sqldrivers
./sqldrivers:
total 432
-rwxr-xr-x 1 root root 439808 Sep 29 03:53 qsqlite4.dll
好吧,功能:addDatabase(“QSQLITE”);有两个参数,第一个是驱动程序,第二个是连接的名称,(作为QString传递)
现在,尝试以下方法:
QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE", "SQLITE");
它对我有用,所以我想这对你有用。 (假设SQLITE是您安装的驱动程序之一)
您可以通过以下方式检查SQLITE:
qDebug() << QSqlDatabase::drivers();
祝好运!
Zaher J.G.
只需添加具有文件夹生命平台和驱动程序的DLL文件
所以只需使用windeployqt工具构建应用程序
先试试这个:
qDebug() << QSqlDatabase::drivers();
检查可用的驱动程序。