无法执行与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中显示查询的结果
答
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
'QSqlQuery'不会将构造函数参数作为sql查询执行,要使用'exec()'方法执行sql查询,可以使用'lastError()。text()'来查看最新的错误。发布'QMessageBox :: information(NULL,“查询执行”,“QUERY返回:”+ data.lastError()。text());' – SIFE 2013-03-22 02:02:28
它返回空的消息内容,我试图使用此代码 'data.prepare(“insert query here”); data.exec(); data.first(); (0).toString()' 并且它的结果var = 0 – INdek 2013-03-22 09:12:00
我也试着执行'qDebug() INdek 2013-03-22 09:28:38