Qt で学んSqlite
でいますが、a によって返されるレコード値にアクセスする際に問題が発生しましたQSqlQuery
。
詳細は以下のとおりですが、要点は次のとおりです。QSqlRecord
クエリから返され、レコードのすべてのフィールドにアクセスしたいのですが、QSqlRecord.count
明らかに 2 つあるのに 1 つの列しか報告していません (例では、それらはidとkeywordです)。
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();
}
}
コンソール出力:
found "blue"
Number of columns: 1
QSqlQuery::value: not positioned on a valid record
"" "blue"