2013-03-22 106 views
0

我想連接並執行與QT框架的查詢,我可以連接到MySQL數據庫,我測試了查詢並驗證它在數據庫上的工作。我認爲MySQL驅動安裝正確,因爲我可以連接,它不拋出任何錯誤無法執行與QT的mysql查詢

void Login::on_loginButton_clicked() 
{ 
    QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL"); 
    db.setHostName("127.0.0.1"); 
    db.setDatabaseName("TestBase"); 
    db.setUserName("username"); 
    db.setPassword("password"); 
    if (!db.open()) { 
    QMessageBox::critical(0,"Database Error","Could not connect to the database, check your internet connection."); 
    } 


QSqlQuery data("SELECT * FROM `TestBase`.`Users` WHERE `userName` = 'Afonso'"); 
//data.exec("SELECT * FROM `TestBase`.`Users` WHERE `userName` = 'Afonso'"); 
QMessageBox::information(NULL, "Query executed", "The query returned: " + data.exec()); 
} 

我也有

data.exec("insert query here"); 
data.next(); 

似乎沒有試圖努力

我想在QMessageBox中顯示查詢的結果

+0

'QSqlQuery'不會將構造函數參數作爲sql查詢執行,要使用'exec()'方法執行sql查詢,可以使用'lastError()。text()'來查看最新的錯誤。發佈'QMessageBox :: information(NULL,「查詢執行」,「QUERY返回:」+ data.lastError()。text());' – SIFE 2013-03-22 02:02:28

+0

它返回空的消息內容,我試圖使用此代碼 'data.prepare(「insert query here」); data.exec(); data.first(); (0).toString()' 並且它的結果var = 0 – INdek 2013-03-22 09:12:00

+0

我也試着執行'qDebug()<< data.lastError();'它輸出了QSqlError( - 1,「」,「」),至於我的谷歌福是查詢執行正確 – INdek 2013-03-22 09:28:38

回答

0
QSqlQuery query(db); 
query.prepare("SELECT * FROM `TestBase`.`Users` WHERE `userName` = :user_name"); 
query.bindValue(":user_name", "Afonso"); 
if (!query.exec()) 
{ 
    qDebug() << query.lastError().text(); 
    retrun; 
} 
while (query.next()) 
{ 
    QVariant v = query.value(0); 
} 
+0

感謝您的代碼工作! – INdek 2013-03-22 11:51:47

-1

我使用pyqt,但通常與選擇查詢,我開始在pyqt中使用 .first()而不是.exec().exec_()獲取數據。 之後next()工作得很好。

+1

您沒有解決OP問題中的問題。你的代碼可能工作(甚至沒有顯示你的代碼),但爲什麼OPs代碼不工作? – Sphinx 2018-03-06 17:24:43