如何在qt中修复"No query Unable to fetch row"
How to fix "No query Unable to fetch row" in qt
我有一个简单的sqlite3数据库,其中包含几个名称和id。如果给出了id,我想得到这个名字。如果我运行我的程序,我收到以下错误:
错误:"错误:"无查询无法提取行" "从 ID = %1 name_table中选择名称(">
数据库名称为"数据名称",数据所在的表为"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("SELECT name FROM name_table WHERE id = ?");
query.bindValue(0, mInputText);
[..]
或
[..]
query.prepare("SELECT name FROM name_table WHERE id = :id");
query.bindValue(":id", mInputText);
[..]
还值得检查QSqlQuery::prepare()
函数返回的内容。有了它,您可以在执行查询错误之前捕获查询错误。
将"="替换为"like">
query.prepare("SELECT name FROM
name_table WHERE id like '%1' " )
经过大量的挣扎,我发现了所有的错误。
db.setName
需要数据库的文件路径(和扩展名(,而不仅仅是文件名:
db.setName("C:/User/name/Documents/db.sqlite3");
- 我错误地使用了占位符(谢谢@vahancho(。它应该看起来像这样:
QSqlQuery query;
query.prepare("SELECT name FROM name_table WHERE id = ?");
query.bindValue(0, mInputText);`
相关文章:
- "error: no matching function for call to"构造函数错误
- 调用专用模板时出错"no matching function for call to [...]"
- c++20[[no.unique_address]]中的新功能是什么
- 以线程安全的方式调用"QQuickPaintedItem::updateImage(const QImage&image)"(no QThread)
- "no matching function for call to 'Vector::Vector'"错误
- Android NDK clang 编译器错误在 Windows 上显示'No such file or directory'
- 处理"no operator found"
- 我在 ifstream input_file(文件名)行中收到错误"no matching function to call";
- 如何解决"no Qt platform plugin could be initialized"问题?
- "Unable to start debugging. No process is associated with this object." - 在Visual Studio Code中使用GDB
- 为什么当我在 std::string 中打开文件名的 fstream 时出现"no matching function"错误?
- 已解决 - C++ 的崇高文本中的"fatal error: opencv: no such file or directory"
- do while 循环中的 if 语句以 yes 或 no 结尾
- 从 TVector2 类派生复杂类:"No matching function for call to Complex::Complex()"
- 错误消息:使用"string* +="后"no match for 'operator+='"
- Eulers 项目问题 no 345 听不懂几行代码
- "No-Const Pointer to Const "调用功能
- 如何在 c++ 中将 s1 和 s2 与 no if 语句进行比较
- 如何在qt中修复"No query Unable to fetch row"
- Qt应用程序中的"No query Unable to fetch row"