QSql数据库看不到表

QSqlDatabase doesn't see a table

本文关键字:看不到 数据库 QSql      更新时间:2023-10-16

我已经创建了一个数据库,该数据库肯定存在于项目目录中,我可以使用dbbrowser和ubuntu终端打开它。他们都表明数据库包含"电影"表,但是我在C 中的代码说没有找到该表

QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
db.setDatabaseName("TestDatabase.db");
if(!db.open())
{
    qDebug() << db.lastError();
    qFatal("Failed to connect");
}
qDebug("Connected");
QSqlQuery query(db);

if(!query.exec("INSERT INTO movies (TITLE,RELEASE,STUDIO,DIRECTOR) VALUES ('Batman v Superman' , 2016 , 'WB', 'ZackSnyder');"))
{
    qDebug() << query.lastError();
}
else {
    qDebug("INSERTED!");
}

输出

Connected
QSqlError("1", "Unable to execute statement", "no such table: movies")

我猜您的数据库与源代码相同的文件夹中,但是当您运行并编译应用程序时,它将在realease/debug文件夹中,其中数据库显然不使用'存在。

现在发生的是QT在不存在时创建数据库,因此您获得Connected消息。

一次指定完整的路径和数据库名称以尝试。它应该按预期执行。

我已经复制了您的代码(并调整了路径(,然后在创建的数据库上运行它,例如

sqlite3 /tmp/TestDatabase.db SQLite version 3.14.0 2016-07-26 15:17:14 Enter ".help" for usage hints. sqlite> create table movies(TITLE text,RELEASE text,STUDIO text,DIRECTOR text); sqlite> .schema CREATE TABLE movies(TITLE text,RELEASE text,STUDIO text,DIRECTOR text);

它可以按预期工作,所以您可能如何测试此您确定您正在从数据库所在的同一地点运行二进制文件吗?您可能正在使用.QRC进行部署?