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
Итак, при использовании готового файла безопасно для «сырых» пользовательских данных? – Serodis
Да, если вы используете переменные связывания, как вы здесь. – Mat