dataBase=new QSqlDatabase();
*dataBase=QSqlDatabase::addDatabase("QSQLITE");
dataBase->setDatabaseName("data.db");
if(!dataBase->open())
{
qDebug()<<dataBase->lastError();
QMessageBox::information(this,"Fail","Fail to connect the database");
return;
}
query=new QSqlQuery(*dataBase);
QStringList existTables;
existTables=dataBase->tables();
if(!existTables.contains(userId))
{
query->prepare("CREATE TABLE :tableName IF NOT EXISTS (item INTEGER PRIMARY KEY AUTOINCREMENT ASC,itemDate,itemType,itemField,itemSpecial,itemNumber,itemHandman,itemExtra)"); ////////////////////////////error
query->bindValue(":tableName",userId);
if(!query->exec())
{ /////////////////////总是进入这个条件分支。
qDebug()<<query->lastError()<<" type: "<<query->lastError().type();
QMessageBox::information(this,"Fail","fail to create tables");
}
}
以上这段代码创建以userId命名的表(如果没有的话),但是运行时总是无法创建成功,总是进入上面标注的条件分支。
输出的错误信息如下:
QSqlError(-1, "Parameter count mismatch", "") type: 2
说是执行的语句的符号问题,我检查了N遍,也没有查出哪里错了,大侠们帮帮忙啊!