【发布时间】:2020-05-30 14:40:27
【问题描述】:
但它没有从数据库中获取数据。我不想将数据检索到表中,并且希望在特定的行编辑中显示数据。错误是什么?有没有修改?
这是我正在使用的代码:
void Userdetails::on_pushButton_4_clicked()
{
delete ui;
// database connection
database = QSqlDatabase::addDatabase("QMYSQL");
database.setHostName("localhost");
database.setUserName("root");
database.setPassword("");
database.setDatabaseName("electricity");
if(database.open()) {
QSqlQuery qry;
QSqlQuery query(QSqlDatabase::database("MyConnect"));
query.prepare(QString("SELECT accno, fullname, address, telephone FROM user_reg_elec WHERE username = :username AND password = :password"));
if(query.exec()) {
query.exec();
while(query.next()) {
ui ->dislayaccountnumber ->setText(query.value(0).toString());
ui ->displayname ->setText(query.value(3).toString());
ui ->displayaddress ->setText(query.value(4).toString());
ui ->displattelephoneno ->setText(query.value(5).toString());
// ui ->displayamountoebill ->setText(query.value(6).toString());
}
} else {
QMessageBox::information(this, "Query did not execute", "Not successful executing the query");
}
} else {
QMessageBox::information(this, "Database not open", "Not opened successfully");
}
database.close();
}
【问题讨论】:
-
querry.prepare(QString("SELECT accno, fullname, address, telephone FROM user_reg_elec WHERE username = :username AND password = :password"));您是否添加了参数化查询的值而忘记将该代码添加到您的问题中?我在您的代码中看到了 2 个参数的 bindValue:https://doc.qt.io/qt-5/qsqlquery.html#approaches-to-binding-values -
@drescherjm 我没有忘记。这就是全部。你能解释一下mutch吗?
-
链接的文档向您展示了如何操作。 querry.bindValue("::username", "Bart");
-
您真的希望用户必须通过用户名和密码进行搜索吗?你会在你的 GUI 中同时问这两个问题吗?
-
另外我假设只有 1 条记录具有相同的用户名和密码,所以
while(querry.next()) {可能会循环 1 或 0 次。