Qt 是否访问SQLite查询记录结果的所有字段?
我正在学习Qt中的Qt 是否访问SQLite查询记录结果的所有字段?,qt,sqlite,Qt,Sqlite,我正在学习Qt中的Sqlite,但是在访问QSqlQuery返回的记录值时遇到了问题 详细信息如下,但要点是:我从查询中得到一个QSqlRecord,希望访问记录的所有字段,但QSqlRecord.count只报告一列,而实际上有两列(在示例中,它们是id和关键字) 我是否误解了SQLite和查询的作用,或者这是我如何访问记录的问题 这是我的模式: void MainWindow::on_addKeywordBtn_clicked() { // find a matching key
Sqlite
,但是在访问QSqlQuery
返回的记录值时遇到了问题
详细信息如下,但要点是:我从查询中得到一个QSqlRecord
,希望访问记录的所有字段,但QSqlRecord.count
只报告一列,而实际上有两列(在示例中,它们是id和关键字)
我是否误解了SQLite和查询的作用,或者这是我如何访问记录的问题
这是我的模式:
void MainWindow::on_addKeywordBtn_clicked()
{
// find a matching keyword
QSqlQuery query(db);
query.prepare("SELECT keyword FROM keywords WHERE keyword = ?");
query.addBindValue(QString("blue"));
query.exec();
while (query.next()) {
QString k = query.value(0).toString();
qDebug() << "found" << k;
QSqlRecord rec = query.record();
qDebug() << "Number of columns: " << rec.count();
int idIndex = rec.indexOf("id");
int keywordIndex = rec.indexOf("keyword");
qDebug() << query.value(idIndex).toString() << query.value(keywordIndex).toString();
}
}
这是我的测试数据:
void MainWindow::on_addKeywordBtn_clicked()
{
// find a matching keyword
QSqlQuery query(db);
query.prepare("SELECT keyword FROM keywords WHERE keyword = ?");
query.addBindValue(QString("blue"));
query.exec();
while (query.next()) {
QString k = query.value(0).toString();
qDebug() << "found" << k;
QSqlRecord rec = query.record();
qDebug() << "Number of columns: " << rec.count();
int idIndex = rec.indexOf("id");
int keywordIndex = rec.indexOf("keyword");
qDebug() << query.value(idIndex).toString() << query.value(keywordIndex).toString();
}
}
完整代码:
void MainWindow::on_addKeywordBtn_clicked()
{
// find a matching keyword
QSqlQuery query(db);
query.prepare("SELECT keyword FROM keywords WHERE keyword = ?");
query.addBindValue(QString("blue"));
query.exec();
while (query.next()) {
QString k = query.value(0).toString();
qDebug() << "found" << k;
QSqlRecord rec = query.record();
qDebug() << "Number of columns: " << rec.count();
int idIndex = rec.indexOf("id");
int keywordIndex = rec.indexOf("keyword");
qDebug() << query.value(idIndex).toString() << query.value(keywordIndex).toString();
}
}
你的错误在这一行,事实上
query.prepare("SELECT keyword FROM keywords WHERE keyword = ?");
在代码中,您明确指示数据库只返回一列,正确的解决方案是:
query.prepare("SELECT * FROM keywords WHERE keyword = ?");
或
谢谢这很有效。我错误地认为我会得到一个包含所有值的对象(记录)。