【发布时间】:2020-01-25 07:44:29
【问题描述】:
我有一个简单的 sqlite3 数据库,其中包含几个名称和 ID。如果给出了 id,我想得到名字。如果我运行我的程序,我会收到以下错误:
错误:“错误:“无查询无法获取行” "SELECT name FROM name_table WHERE id = %1)""
数据库名称是“dataname”,数据所在的表是“name_table”。下面是我的代码:
QSqlDatabase db;
mInputText = ui->lineEdit->text();
const QString DRIVER("QSQLITE");
if(QSqlDatabase::isDriverAvailable(DRIVER)){
db = QSqlDatabase::addDatabase(DRIVER);
}
db.setHostName("localhost");
db.setDatabaseName("dataname");
db.open();
if(!db.open()){
qWarning() << "ERROR: " << db.lastError();
}
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::on_pushButton_clicked()
{
mInputText = ui->lineEdit->text();
QSqlQuery query;
query.prepare("SELECT name FROM name_table WHERE id = %1");
query.bindValue("%1", mInputText);
if(!query.exec())
qWarning() << "ERROR: " << query.lastError().text();
qDebug() << query.executedQuery();
if(query.first())
ui->mOutputText->setText(query.value(0).toString());
else
ui->mOutputText->setText("not found");
}
谁能帮我找出我的错误。我是 sql 新手。我认为我的错误可能是“.setHostName”或查询绑定值,但我尝试了一切,但无法正常工作。提前致谢!
问候
【问题讨论】:
-
query.prepare()调用返回什么?您的查询似乎有错误。注意最后的括号! -
我把括号去掉了,还是不行。我理解的方式是
query.prepare和query.bindValue用于设置查询,query.value(0).toString()应该返回一个字符串(不管名字是什么)
标签: c++ sql database sqlite qt