无法执行与QT的mysql查询

问题描述:

我想连接并执行与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() INdek 2013-03-22 09:28:38

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

我使用pyqt,但通常与选择查询,我开始在pyqt中使用 .first()而不是.exec().exec_()获取数据。 之后next()工作得很好。

+1

您没有解决OP问题中的问题。你的代码可能工作(甚至没有显示你的代码),但为什么OPs代码不工作? – Sphinx 2018-03-06 17:24:43