我試圖用Qt-Framework連接到一個sql數據庫。QSqlDatabase :: open()總是返回true
不幸的是,儘管沒有建立連接(?),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)");
}
我猜QSQLITE驅動忽略用戶名和密碼,因爲它[不支持這些功能](https://github.com/radekp/qt/blob/master/src/sql/drivers/sqlite/qsql_sqlite.cpp #L523)。 –
耶,我能用QMYSQL驅動程序解決我的問題!在Ubuntu上,我需要安裝驅動程序:sudo apt-get install libqt5sql5-mysql – Alex
如果這確實解決了問題,您應該將其添加爲答案並將答案標記爲已接受,以使其可見,您的問題已解決。 http://stackoverflow.com/help/self-answer – Erik