• 9589阅读
  • 5回复

急问使用QTableView和QSqlTableModel来修改数据库的问题 [复制链接]

上一主题 下一主题
离线danielfunny
 
只看楼主 倒序阅读 楼主  发表于: 2008-05-22
— 本帖被 XChinux 从 General Qt Programming 移动到本区(2011-01-02) —
最近才开始接触QT,我使用QODBC协议来连接数据库。使用QTableView和QSqlTableModel来显示数据库,
代码大致如下

db1 = QSqlDatabase::addDatabase("QODBC");
  db1.setDatabaseName("Test");
db1.setHostName("OFFICE");
db1.setUserName("sa");
db1.setPassword("sql");

if (!db1.open()) {
            return false;
    }

....

QTableView viewTable = new QTableView();

QSqlTableModel modelSql= new QSqlTableModel(viewTable,db1);

modelSql->setEditStrategy(QSqlTableModel::OnRowChange);//OnFieldChange,OnManualSubmit,OnRowChange

  modelSql->select();
 
viewTable->setSelectionBehavior(QAbstractItemView::SelectRows);
viewTable->setSelectionMode(QTableView::SingleSelection);
viewTable->setModel(modelYc);
viewTable->setEditTriggers  (QAbstractItemView::DoubleClicked|QAbstractItemView::EditKeyPressed);   


我想直接在TABLE中实现对数据库表内容的修改(编辑TABLE的内容直接修改)
modelSql->setEditStrategy(QSqlTableModel::OnRowChange);l来设置编辑策略。
但是还是修改不了,我试过,使用OnManualsubmit策略,通过手动submitAll(),也无法实现。

同样如果试验过使用QSQLITE协议连接的数据库就能实现,不知道我究竟什么地方没写对,
请高手指点。
离线081620
只看该作者 1楼 发表于: 2008-06-08
似乎楼主需要看看Delegate方面的内容可能有帮助吧
DEMO中有 可以参考一下~~
:)
离线ihope2004
只看该作者 2楼 发表于: 2008-09-28
QSqlTableModel modelSql= new QSqlTableModel(viewTable,db1);
生成的似乎是空Model,好像还得SetTable("tableName")才能Select()吧。
另外,QT访问通过DSN指定ODBC数据源方式会出现问题(尤其是没有对应驱动插件的数据库),这是由于QT本身的Bug所致。
离线hnwdx

只看该作者 3楼 发表于: 2008-09-28
似乎是空元素问题。
但如何对付这种空元素。搞不清楚,也在摸索中......
离线mecland
只看该作者 4楼 发表于: 2008-10-02
使用Delegate
离线hnwdx

只看该作者 5楼 发表于: 2008-10-03
如何使用Delegate?
不是不想使用,而是使用后数据还会自动呈现吗?主要想利用QT本身的这套机制,自己写当然能实现,但是不想自己写啊。
快速回复
限100 字节
 
上一个 下一个