Qt连接Sqlite使用事务批量插入数据

Qt连接Sqlite使用事务批量插入数据

方法一,批处理方式:

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内有原数据,此时数据库不会保存主键值重复的内容
listIndex.clear();
tmStamp.clear();
dtData.clear();

方法二,占位符方式:

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();
发布了15 篇原创文章 · 获赞 0 · 访问量 7435

猜你喜欢

转载自blog.csdn.net/hellozhuzhuye/article/details/105402597