本人刚开始学习Qt编程,试过Qt用ODBC操作Access数据库,但发现效率比不上ADO方式(同一个Access数据库用Delphi的ADO方式读写30万条记录,Qt的ODBC完成同样的事慢好几倍)所以正在学习Qt用ADO方式操作Access数据库。目前遇到了将数据显示到TableView上的问题,特此求教。
已经用QAxObject实现ADO打开Access数据库,并且可以成功获取Test表的记录数,获取单条记录的数据也不是问题。
问题是如何才能在TableView上显示整个Test表?总不见得用代码去逐个读取并填写Model吧?
QAxObject能否直接返回一个Model给TableView用呢?(类似Delphi中DBGrid直接关联一个数据源,数据源变化DBGrid自动变化)
QAxObjectADOConnection->setControl("ADODB.Connection");
QAxObjectADOConnection->setProperty("ConnectionTimeout",5);
QAxObjectADOConnection->dynamicCall("Open(QString,QString,QString,int)","Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\\Test.mdb","","",adConnectUnspecified);
ActiveConnection=QAxObjectADOConnection->asVariant();
QAxObjectADORecordset->setControl("ADODB.recordset");
QAxObjectADORecordset->dynamicCall("Open(QString,QVariant,int,int,int)","Test",ActiveConnection,AdOpenStatic,AdLockOptimistic,adCmdTable);
QAxObjectADORecordset->property("RecordCount").toUInt();//这里可以成功获得Test表记录数量