连接数据库、建表结构
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内有原数据,此时数据库不会保存主键值重复的内容
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();原文链接:https://www.f2er.com/sqlite/198450.html