这个函数是我用于从数据库中获取数据的
bool DataSource::execSelect(const QString& query, QSqlTableModel& model)
{
QSqlQuery sq(query, instance().db);
sq.exec();
int newRowCount = model.rowCount();
int rowCount = 0;
model.clear();
while(sq.next())
{
model.insertRecord(rowCount++, sq.record());
}
newRowCount = model.rowCount();
return true;
}
当我把 SELECT 语句传递给这个函数时,我进行了跟踪,第一次 newRowCount 为 0,第二次为1,但在数据库(我用 MySQL,用QT在数据库中插入数据没有问题)中有两条同样的数据,为什么获取不到数据呢?而且在调用该函数时,我用 model.record() 获取数据,但得到的是个无效的 QSqlRecord 呢?请高手指教下。
我把函数改成下面这样子后,while 循环进行了两次,但第一次 insertRecord() 返回 true,第二次返回 false,怎么回事呢?
bool DataSource::execSelect(const QString& query, QSqlTableModel& model)
{
QSqlQuery sq(query, instance().db);
sq.exec();
int newRowCount = model.rowCount();
model.clear();
while(sq.next())
{
bool b = model.insertRecord(-1, QSqlRecord(sq.record()));
QString str = model.record(0).value(0).toString();
}
newRowCount = model.rowCount();
return true;
}
[ 此帖被sand.fj.wen在2009-11-24 12:01重新编辑 ]