• 7528阅读
  • 6回复

QSqlTableModel 获取数据问题 [复制链接]

上一主题 下一主题
离线sand.fj.wen
 
只看楼主 倒序阅读 楼主  发表于: 2009-11-24
— 本帖被 XChinux 从 General Qt Programming 移动到本区(2011-01-02) —
这个函数是我用于从数据库中获取数据的
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重新编辑 ]
离线sand.fj.wen
只看该作者 1楼 发表于: 2009-11-24
难道,高手都不在了?
离线foxyz

只看该作者 2楼 发表于: 2009-11-24
建议楼主去看看QT的examples:
sql/querymodel/editablesqlmodel.cpp
离线sand.fj.wen
只看该作者 3楼 发表于: 2009-11-24
引用第2楼foxyz于2009-11-24 15:23发表的  :
建议楼主去看看QT的examples:
sql/querymodel/editablesqlmodel.cpp

我查看 QSqlQuery::record() 函数的返回结果,是正确的,但就是插入到 QSqlTableModel 出错了。但我实在找不到为什么...
离线shiroki

只看该作者 4楼 发表于: 2009-11-24
可以换qaqlquerymodel啊
--
shiro is White
ki is tree
http://www.cuteqt.com
论坛 http://www.cuteqt.com/bbs
博客 http://www.cuteqt.com/blog
博客镜像: http://sites.cuteqt.com/cuteqt
Linux/Qt/嵌入式讨论群 http://qun.qq.com/air/5699823
离线sand.fj.wen
只看该作者 5楼 发表于: 2009-11-24
引用第4楼shiroki于2009-11-24 18:00发表的  :
可以换qaqlquerymodel啊

试过了,但 QSqlQueryModel.setRecord() 也不行呀。
离线sand.fj.wen
只看该作者 6楼 发表于: 2009-11-25
没有解决,但我自己写了个 model 专门用于存储数据。避开这个问题。
快速回复
限100 字节
 
上一个 下一个