QT5操作SQLite查询操作失败,求助!

牧牛童子 2021-03-31 09:35:02
环境:win10 + qt5.14.1 + SQLite
数据库文件用绝对路径;

打开成功,可以读出库中 表的清单;
QStringList tableNameList = database.tables(); 列举库中表名称成功

但是,执行
sql_query.exec("SELECT * FROM TABLE01") ; 失败!!失败!!失败!!

按照 搜索出的方法 :
将plugins目录放在EXE程序目录 、将sqldrivers目录放在 EXE 程序目录 、直接将qsqlite.dll 放在EXE目录 三各方法同时尝试,
( sql_query.lastError() )始终提示: Driver not loaded Driver not loaded.

求助!

...全文
358 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
mideum 2021-03-31
  • 打赏
  • 举报
回复
列举表名称成功说明你插件时载成功的,不用去搞那些dll了
问题应该出在你的sql_query上,应该是使用QSqlQuery没有指定QSqlDatabase吧
你是不是在database=QSqlDatabase::addDatabase的时候传了一个非空字符串作为connectionName?
那样的话在创建QSqlQuery时要把database也传进去
xqhrs232 2021-03-31
  • 打赏
  • 举报
回复
估计是库路径的问题,或者32/64位数的问题
牧牛童子 2021-03-31
  • 打赏
  • 举报
回复
//------------conn fun ------------ database = QSqlDatabase::addDatabase("QSQLITE"); database.setDatabaseName(dbFileNameStr_Global); if (!database.open()) { qDebug() << "Error: Failed to connect database." << database.lastError(); return; } //-------query fun----- QSqlQuery sql_query; //--将这里与DB对象建立联系就可以了,改为:QSqlQuery sql_query(database) ; srcSQLstr = "SELECT * FROM sqlite_master"; bool ValQueryYN = sql_query.exec(srcSQLstr); if(ValQueryYN == false) { qDebug()<<sql_query.lastError(); }
牧牛童子 2021-03-31
  • 打赏
  • 举报
回复
引用 4 楼 mideum 的回复:
[quote=引用 2 楼 牧牛童子 的回复:] database = QSqlDatabase::addDatabase("QSQLITE");
如果你的代码是这样的话,那connectionName是留空的 正常情况下这样QSqlQuery创建时就不需要指定database了 你能不能贴一下全一点的代码?[/quote] 搞定了! 二楼的 大神 “创建QSqlQuery时要把database也传进去”提醒了我; QSqlQuery sql_query(database) ; //成功了 原先是 QSqlQuery sql_query ; //失败的
mideum 2021-03-31
  • 打赏
  • 举报
回复
引用 2 楼 牧牛童子 的回复:
database = QSqlDatabase::addDatabase("QSQLITE");

如果你的代码是这样的话,那connectionName是留空的
正常情况下这样QSqlQuery创建时就不需要指定database了
你能不能贴一下全一点的代码?
hitzsf 2021-03-31
  • 打赏
  • 举报
回复
驱动没问题 应该是楼上说的问题,加载数据库类型的时候,提供了额外的连接名称 qsqlquery的数据连接和加载的连接不是同一个连接
牧牛童子 2021-03-31
  • 打赏
  • 举报
回复
引用 1 楼 mideum 的回复:
列举表名称成功说明你插件时载成功的,不用去搞那些dll了 问题应该出在你的sql_query上,应该是使用QSqlQuery没有指定QSqlDatabase吧 你是不是在database=QSqlDatabase::addDatabase的时候传了一个非空字符串作为connectionName? 那样的话在创建QSqlQuery时要把database也传进去
你似乎说到点上了。 database = QSqlDatabase::addDatabase("QSQLITE"); QSqlQuery 在哪里与这个 database建立联系呢?

16,240

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧