2012-07-25 172 views
2

我无法理解当我实现QSqlQueryModel时如何访问返回的元素。如何访问从QSqlquerymodel集合查询返回的元素

我知道你可以做 QSqlQuery查询;

query.prepare("select * from database"); 

query.exec(); 

query.next(); 

qDebug() << "value in 0 is " << query.value(0).SomeFormat; 

所以我想要做类似的东西与QSqlQueryModel(显然是更好的方式去)......在哪里设置查询,那么我可以输出的值到其他很多箱子,我有。 我有什么至今...

QSqlQuery selectAllUserFields; 

selectAllUserFields.prepare(QString("SELECT * from %1 WHERE %2=:firstName and %3=:lastName;") 
          .arg(dbase::c_userTableName) 
          .arg(dbase::c_colUserFirstName) 
          .arg(dbase::c_colUserSecondName)); 

// finds the index of the current selection, so we can select the row 
QModelIndexList tableIndex = m_ui->populatedUserBox->selectionModel()->selection().indexes(); 


QString firstName = tableIndex.at(0).data().toString(); 

QString lastName = tableIndex.at(1).data().toString(); 

QSqlQueryModel dbUsers; 

dbUsers.setQuery(selectAllUserFields); 

qDebug() << "DEBUG: {temp} " << dbUsers.record(0).value(0).toString(); 

我beginnerish,所以会在正确的方向欣赏微调,如果有人可以帮助。

感谢 格兰特

+0

也许你可以迭代模型的记录从0到QSqlQueryModel :: rowCount? – hank 2012-07-26 06:25:41

+0

救了我这个问题 – 2015-12-12 18:11:33

回答

1

我建议你看看在QSqlQueryModel文档“详细说明”部分,在那里它提供了一个例子,在。为了更好地帮助你,这里是一些代码,我写了一个应用程序遍历模型结果集:

for(int i = 0; i < sqlQueryModel->rowCount(); ++i) 
{ 
    qDebug() << sqlQueryModel->record(i).value(0).toString(); 
} 

另一种方法是使用功能QSqlQueryModel ::数据();再次,我建议你阅读这里的文档:http://doc-snapshot.qt-project.org/4.8/qsqlquerymodel.html

相关问题