• 5797阅读
  • 1回复

用tablemodel操作数据库问题 [复制链接]

上一主题 下一主题
离线daimon0316
 
只看楼主 正序阅读 楼主  发表于: 2008-11-12
— 本帖被 XChinux 从 General Qt Programming 移动到本区(2011-01-02) —
用tablemodel操作数据库,代码如下:

    int iRow = ui.tableView->currentIndex().row();
    if (QMessageBox::question(this, tr("提示信息"), tr("确定要删除第 ") + QString::number(iRow+1) + tr(" 行纪录?"), tr("确定"), tr("取消")) == 0)
    {
        bool isSuccess = dao.model->removeRow(iRow);
        if(isSuccess){
            dao.model->submitAll();
        }
//        int rowid = dao.model->record(iRow).value("id").toInt();
//        dao.deleteRecord(rowid);
    }
    this->refresh();

可以变异通过,但运行时无法删除记录,总是提示
warning: QSqlQuery::value: not positioned on a valid record
博客地址 http://blog.sina.com.cn/daimon0316
离线shiroki

只看该作者 1楼 发表于: 2009-07-31
先检查中间过程的各个变量的值是不是正常,如iRow的值
在代码里这个错误的出处是这样的:
QVariant QSqlQuery::value(int index) const
{
   if( isActive() && isValid() && (index > QSqlQuery::BeforeFirstRow))
       return d->sqlResult->data(index);
   qWarning(...);
   return QVariant();
}

所以, 可能是not active 或者 not valid.
再一步一步找问题所在
--
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
快速回复
限100 字节
 
上一个 下一个