QT的数据库操作有两种方法。 1 )可以使用QsqlTableModel类与QTableView配合使用进行接口显示和数据库操作。
该方法比较方便快捷二)使用原始SQL语言,利用INSERT、UPDATE、SELECT、DELETE实现插入、更新、查询、删除功能;
1 )使用qsql表模型类;
qsql数据库数据库数据库; //数据库打开;
QString szTable='test '; //数据表名称
m _ psql table model=newqsqltablemodel (this,db ); //bind tableView;
m _ psql表模型-设置表模型(qsql表模型3360: onmanual submit );//有三种创建模式;
m _ psql表模型- settable (SZ表; //指定数据表
m _ psql表模型集过滤器(id=1); //where条件;
m _ psql表模型- select (;//相当于SQL语言的select
1、增加记录
intn rownum=m _ SQL table model-rowcount (; //记录数
qlrecordrecord=m _ SQL table model-record (; //
m _ SQL table模型集记录(n rownum,record;
if (! m_sqlTableModel-submitAll ()
{
q调试() )
}
2、修改记录
QL表模型* pmode=dynamic _ cast (ui-table view-model () );
pMode-database ().transaction ); //开始事务操作
pmode-submit all () (if )//将所有修改的数据提交到数据库
{
pMode-database ().commit ); //提交成功后,事务真的要修改数据库数据
} else {
pMode-database ().rollback ); //提交失败,事务将回滚
qessagebox :3360警告(this,tr )表模型(,tr ) )数据库错误: %1) (.arg ) pmode-lasterror ) (.text ) )
}
pMode-revertAll (; //取消修改
3、查询记录
m _ psql表模型集过滤器(id=1);
m _ psql表模型- select (; //查询
4、删除记录
//删除实现多行删除的键函数removeRow
qitemselectionmodel * pselect model=ui-table view-selection model (;
qodelindexlistindexlist=pselect model-selectedindex es (; //已选择;
QMaprowMap;
Foreach(qmodelindexindex,索引列表)。
{
if (! index.isValid () ) return;
if(index.column )!=0)继续;
rowmap.insert(index.row ),0 );
}
质量映射器(原始映射); //如果尝试删除多行,则按原样一行一行地删除会发生位置移动。 在此,通过保存要删除的所有行,并从后向前删除,来解决位置移动导致的删除错误。
rowMapIterator.toBack (;
while (rowmapiterator.has previous () ) )
{
rowMapIterator.previous (;
int rowm=rowMapIterator.key (;
m _ psql表模型- remove row (rowm;
}
m _ psql表模型- submit all (;
m _ psql表模型- select (;
QItemSelectionModel是QTableView的选择包类,可以方便地检索当前选定的区域。
2 )使用原始SQL语句
略;
注:此博文为扩展型