我已经创建了一个肯定存在于项目目录中的数据库,我可以使用 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)
我猜您的数据库与源代码位于同一文件夹中,但是当您运行和编译应用程序时,它将位于数据库显然不存在的发布/调试文件夹中。
现在发生的是 Qt 在它不存在时创建数据库,因此您会收到Connected消息。
指定完整路径和数据库名称一次即可尝试。它应该按预期执行。
| 归档时间: |
|
| 查看次数: |
661 次 |
| 最近记录: |