我正在尝试使用Qt-Framework连接到sql数据库。
不幸的是,即使没有建立连接,db.open()始终返回true(您可以设置任何密码,主机名等)。我从查询中得出的结论对数据库没有任何影响。
我在Ubuntu 14.04上使用LAMPP。
我有以下代码:
#include "mainwindow.h" #include "ui_mainwindow.h" #include <QApplication> #include <QSql> #include <QSqlDatabase> #include <QMessageBox> #include <QSqlQuery> void MainWindow::on_ButtonSQL_clicked() { QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE", "con1"); db.setHostName("localhost"); db.setDatabaseName("kinectshop2015"); db.setUserName("root"); db.setPassword(""); QMessageBox msgBox; if (db.open()) { msgBox.setText("Yay! Your database host is "+db.hostName()+" .\n"+" The name of the database is "+db.databaseName()+"."); msgBox.exec(); } QSqlQuery query; query.exec("INSERT INTO users (id, username, balance, isAdmin)" "VALUES(3, 'somebody', 10000, 1)"); }
这是解决我的问题的方法。我使用了驱动程序QMYSQL而不是QSQLITE。我只使用了后者,因为无法加载第一个。在 Ubuntu&QT5上, 只需键入 sudo apt-get install libqt5sql5-mysql 即可解决问题。