QT SQLITE使用事务批量插入数据
发布时间:2020-12-12 19:22:36 所属栏目:百科 来源:网络整理
导读:连接数据库、建表结构 QsqlDatabase dbT1 = QSqlDatabase ::addDatabase( "QSQLITE" ); //连接数据库 dbT1.setDatabaseName( "t1data" ); //设置数据库名称 dbT1.open(); //打开数据库 //建表 datQry.exec( "create table datatable (tIndex int primary key
连接数据库、建表结构 QsqlDatabase dbT1 = QSqlDatabase::addDatabase("QSQLITE"); //连接数据库 dbT1.setDatabaseName("t1data"); //设置数据库名称 dbT1.open(); //打开数据库
//建表datQry.exec("create table datatable (tIndex int primary key, ""tTimStamp int, ""tDistance varchar(20))");
方法一,批处理方式:
dbT1.transaction(); //开始启动事务 inQry.prepare("insert into datatable values (?,?,?)"); while(!ReadDat.atEnd()) {
strTextData = ReadDat.readLine(); listIndex << datIndex; tmStamp << tmStampCnt; dtData << strTextData; datIndex++; DatWin->append(strTextData); }
//绑定数据,顺序应与表结构字段数据一致 inQry.addBindValue(listIndex); //绑定数据 inQry.addBindValue(tmStamp); //绑定数据 inQry.addBindValue(dtData); //绑定数据 inQry.execBatch(); //进行批处理操作 dbT1.commit(); //提交事务,此时打开数据库文件执行SQL语句 //不加下面三句,重复操作上面语句时,数据库不会有新的添加 //因为作为主键的listIndex内有原数据,此时数据库不会保存主键值重复的内容
方法二,占位符方式:
dbT1.transaction(); while(!ReadDat.atEnd()) { strTextData = ReadDat.readLine(); inQry.prepare("insert into datatable(tIndex,tTimStamp,tDistance)" "values(:tIndex,:tTimStamp,:tDistance)"); inQry.bindValue(0,datIndex); inQry.bindValue(1,tmStampCnt); inQry.bindValue(2,strTextData); inQry.exec(); datIndex++; DatWin->append(strTextData); } dbT1.commit(); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |