【问题标题】:Can't execute mysql querys with QT无法使用 QT 执行 mysql 查询
【发布时间】:2013-03-11 18:26:40
【问题描述】:

我正在尝试使用 QT 框架连接并执行查询,我可以连接到 mysql 数据库,并且我已经测试了查询并验证它在数据库上工作。我认为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不带构造函数参数来执行它作为sql查询,执行sql查询使用exec()方法,查看最新错误使用lastError().text()。发布QMessageBox::information(NULL,"Query executed","The querry returned: " + data.lastError().text());的留言内容
  • 它返回空,我尝试使用此代码data.prepare("insert query here"); data.exec(); data.first(); QString result = data.value(0).toString() 结果变量为 = 0
  • 我也尝试执行qDebug() << data.lastError();,它输出了QSqlError(-1, "", ""),我的google-fu就是查询正确执行了

标签: c++ mysql database qt qsqlquery


【解决方案1】:
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);
}

【讨论】:

    【解决方案2】:

    我使用 pyqt,但通常使用选择查询,我开始使用 .first() 而不是 .exec() pyqt 中的 .exec_()。 之后 next() 工作正常。

    【讨论】:

    • 您没有解决 OP 问题中的问题。您的代码可能有效(甚至没有显示您的代码),但为什么 OPs 代码不起作用?
    猜你喜欢
    • 1970-01-01
    • 2017-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-09
    • 1970-01-01
    • 1970-01-01
    • 2018-06-01
    相关资源
    最近更新 更多