我有Qt和sqlite的问题。直到最近,我在创建表时没有任何问题,但现在,每当我尝试创建一个表(使用完全相同的函数)时,我收到一条错误消息:
QSqlError("1", "Unable to fetch row", "table selections already exists")
我的查询字符串如下:
CREATE TABLE external_files (path VARCHAR (255) NOT NULL, used INTEGER (12) NOT NULL);
这也和以前一样。
奇怪的是,创建的所有表都没有问题,但我仍然收到错误消息。
如果您有任何想法,为什么会发生这种情况,我将不胜感激。 :)
更新:最小,完整,可验证的示例:
#include <QCoreApplication>
#include <QSqlDatabase>
#include <QSqlQuery>
#include <QSqlError>
#include <QFile>
#include <QTextStream>
#include <QDebug>
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE", "CONN");
db.setDatabaseName("test.db");
if(!db.open()){
qDebug() << "Connection failed!";
}
QFile tableListFile(":/resources/sql/tables.sql");
if(tableListFile.open(QIODevice::ReadOnly))
{
QTextStream stream(&tableListFile);
while(!stream.atEnd())
{
QString queryString = stream.readLine();
qDebug() << "Query string: " << queryString;
QSqlQuery query(queryString, db);
if(!query.exec()){
qDebug() << "Query error: " << query.lastError();
}
}
}
db.close();
return a.exec();
}
提前致谢。
答案 0 :(得分:0)
好的,我设法解决了这个问题。 对于每个查询字符串,查询执行了2次,这导致了错误消息。 为了找到解决方案,我编辑了我的代码:
QString queryString = stream.readLine();
qDebug() << "Query string: " << queryString;
QSqlQuery query;
if(!query.exec(queryString)){
qDebug() << "Query error: " << query.lastError();
}