QSql数据库看不到表
QSqlDatabase doesn't see a table
我已经创建了一个数据库,该数据库肯定存在于项目目录中,我可以使用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进行部署?
相关文章:
- 我不断收到 [错误] ID 返回 1 退出状态错误,但看不到问题所在
- 看不到文件'SDL2.lib'
- WSL 看不到环境变量
- 为什么我的 FreeRTOS 任务看不到类成员?
- Google Colab 看不到 .so 文件
- 派生类看不到基类成员
- 为什么我看不到字符串?
- CMake 看不到SDL2_PATH环境变量 (Windows)
- OpenMP 任务看不到共享变量的更改
- handleMessage看不到我的类和函数
- 为什么 connect() 函数看不到插槽?
- 模板类看不到继承的模板成员
- 为什么即使链接器找到目标文件,我的程序也看不到函数定义?
- 将 somedialog.h 包含在项目的其他部分中会使编译器看不到 ui_somedialog.h
- SFML - 代码::块看不到 sfml 图形(等)文件
- CMake 看不到源文件,找不到 #includes
- ifstream在OSX上看不到新内容
- C++概念看到我的类型的函数,但看不到 std::vector 的函数
- QSql数据库看不到表
- C++ OTL 看不到外部数据库更改