我正在尝试在sqlite中插入大量数据,以获得性能,我正在使用transaction
语句。我的代码看起来像这样:
CSVParser解析器;
query.exec("BEGIN TRANSACTION;");
while (!file.atEnd())
{
line = file.readLine();
if (line == "")
continue;
parser << line.toStdString(); // Feed the line to the parser
// Now extract the columns from the line
parser >> sCol1 >> sCol2 >> sCol3 >> sCol4;
// Method one to insert data
sqlQuery = "INSERT INTO Person(phone, name, firstname, lastname) VALUES (" \
"'" + QString(sCol1.c_str()) + \
"','" + QString(sCol2.c_str()) + \
"','" + QString(sCol4.c_str()) + \
"','" + QString(sCol3.c_str()) + "')";
//query.exec(sqlQuery);
// Method two to insert data
query.prepare("INSERT INTO Person(phone, name, firstname, lastname) VALUES (:phone, :name, firstname, :lastname");
query.bindValue(":phone", QString(sCol1.c_str()));
query.bindValue(":name", QString(sCol2.c_str()));
query.bindValue(":firstname", QString(sCol4.c_str()));
query.bindValue(":lastname", QString(sCol3.c_str()));
query.exec();
cout << query.lastError().text().toStdString();
}
query.exec("END TRANSACTION;");
如果我使用第一种方法,数据插入正常,但如果文本包含像这样的“'”的charcarter,则问题可能会在以后出现。为了避免这种情况,我切换到预备语句,一个新问题,没有插入数据。我看到的唯一错误:
参数计数不匹配参数计数不匹配参数计数 不匹配参数计数不匹配参数计数不匹配参数 计数不匹配参数计数不匹配参数计数不匹配 我在这里失踪了吗?
答案 0 :(得分:0)
我想知道这是不是原因:
query.prepare("INSERT INTO Person(phone, name, firstname, lastname)
VALUES (:phone, :name, firstname, :lastname");
^^^
missing close paren inside the string^^^