4
以下代碼創建一個表並使用數據填充數據庫。運行以下代碼時,我收到'Parameter count mismatch'
上的錯誤query.exec()
。但是,如果我使用註釋行代替,則一切正常。我如何濫用準備功能?QSqlQuery - 準備失敗,'參數計數不匹配'
QSqlQuery query;
if (query.exec("CREATE TABLE Users (u_ID INT IDENTITY(1,1) PRIMARY KEY, cName varchar(25) UNIQUE)"))
{
for (int i=1;i<=100;++i)
{
QString uName;
uName = "user" + QString::number(i);
query.prepare("INSERT INTO Users (cName) VALUES(':UNAME')");
query.bindValue(":UNAME",uName);
query.exec();
//query.exec("INSERT INTO Users (cName) VALUES('" + uName + "')");
if (query.lastError().isValid()){
QMessageBox::information(0,"ERR!",query.lastError().text());
}
}
}
+1:圍繞字符串的''',字符串轉義以及所有其他類型注意事項都在參數化查詢中處理。 – MatBailie 2012-01-08 18:59:43
那麼,使用準備對'原始'用戶數據安全嗎? – Serodis 2012-01-08 19:05:20
是的,如果你在這裏使用綁定變量。 – Mat 2012-01-08 19:05:55