1
我想在sqlite中插入巨大的數據,以獲得性能,我使用transaction
語句。我的代碼如下所示: CSVParser解析器;使用準備語句與sqlite交易語句
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這樣的「'」以後可能會出現的問題。爲了避免這種情況,我切換到準備好的聲明,一個新問題,沒有插入數據。唯一的錯誤我看到:
參數數量不匹配參數數量不匹配參數計算 補償參數數量不匹配參數數量不匹配參數 數量不匹配參數數量不匹配參數數量不匹配 有我在這裏失蹤?
向前滾動顯示的編輯時許,THX一次。 – SIFE 2012-01-12 00:46:03