下面的代码创建一个表并在数据库中填充数据。运行以下代码时,我在query.exec()
上收到一个错误'Parameter count mismatch'
。但是,如果我使用注释行,一切都会很好。我怎么会滥用prepare功能?
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());
}
}
}
只需使用:
query.prepare("INSERT INTO Users (cName) VALUES(:UNAME)");
即不要引用绑定变量。