QSqlDatabase 看不到表

Jac*_*son 1 c++ sqlite qt

我已经创建了一个肯定存在于项目目录中的数据库,我可以使用 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!");
}
Run Code Online (Sandbox Code Playgroud)

输出

Connected
QSqlError("1", "Unable to execute statement", "no such table: movies")
Run Code Online (Sandbox Code Playgroud)

deW*_*eW1 5

我猜您的数据库与源代码位于同一文件夹中,但是当您运行和编译应用程序时,它将位于数据库显然不存在的发布/调试文件夹中。

现在发生的是 Qt 在它不存在时创建数据库,因此您会收到Connected消息。

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