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

Qt连接Sqlite使用事务批量插入数据 方法一,批处理方式: dbT1.transaction() […]

2018年10月7日

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();
打赏 0

共有 0 条评论