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();
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章