QT里使用sqlite的问题,好多坑

这篇具有很好参考价值的文章主要介绍了QT里使用sqlite的问题,好多坑。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1. 我使用sqlite,开发机上好好的,测试机上却不行。后来发现是缺少驱动(Driver not loaded Driver not loaded),代码检查了又检查,发现应该是缺少dll文件(系统不提示,是自己使用 QMessageBox::warning(NULL, ("error"), database.lastError().text());后猜到的)。于是自己千方百计的想办法,反复测试,就是不行。结果悲剧的发现,原来是多次设置路径错误,浪费一上午时间。应该直接在可执行exe文件的同一目录下设置目录和文件如下即可:
my.exe\sqldrivers\qsqlite4.dll
既不要写成:
my.exe\plugins\sqldrivers\qsqlite4.dll
也不要写成
my.exe\sqldrivers\sqlite\qsqlite4.dll (因为QT自己的目录就是C:\Qt\4.8.6_2008\src\plugins\sqldrivers\sqlite)
另外,放在my.exe同一目录下也没有用。

2. 编程的时候,注意不能使用new QSqlDatabase();后调用addDatabase()函数。原因是什么我也不知道,反正结论在这里:
http://qt-project.org/doc/qt-4.8/qsqldatabase.html#open

3. 编程的时候注意,要填上QSQLITE,不是SQLITE
QSqlDatabase database = QSqlDatabase::addDatabase("QSQLITE");

4. 使用QSqlDatabase::addDatabase函数的时候,如果是一个临时对象,那么要把它命名一下,比如(关键是第二个参数):
QSqlDatabase localdb = QSqlDatabase::addDatabase("QSQLITE", "Old_DB");
如果不写这第二个参数,那么就会把这个新连接当作默认连接,这样申请QSqlQuery对象但不写明数据库连接的话就会出错。

5. 使用 QSqlDatabase::removeDatabase的时候,必须把前面所有语句括号括起来,莫名其妙的一种用法。不过既然是官方文档这样说,就记住它,遵守它,相关链接在这里:
http://qt-project.org/doc/qt-4.8/qsqldatabase.html#removeDatabase

6. 还有一个文件qsqlited4.dll,不知道是干什么。

7. 可以很方便的使用VS编译C:\Qt\4.8.6_2008\src\plugins\sqldrivers\sqlite路径下的sqlite.pro工程文件,Release编译后得到一个dll,放在相关的路径里使用没有问题。

8. Process Explorer这个软件可以清楚地显示,当前开发exe文件依赖哪些DLL,很有帮助。这样就不用动脑筋了,观察结果即可。比如它我对这个项目提示依赖:

C:\Qt\4.8.6_2008\plugins\sqldrivers\qsqlite4.dll
但是注意,它提示的是开发机上的dll路径,客户机上的路径不一定是这样的。

但它的提示也只能作为一种参考,不能完全当真,它还提示我使用:
C:\Qt\4.8.6_2008\plugins\imageformats\qtiff4.dll
可是我根本就没有使用tiff文件。所以这个提示作为一种参考,找到自己需要的信息即可。

总结,QT发布版的坑真是多,怪不得QT公司不让免费用户静态编译和修改,大概是只让高手们用它来玩的。不知道静态编译是否可以避免这些问题。

---------------------------------------------------------------------------

几个有用连接:
http://qt-project.org/doc/qt-4.8/sql-driver.html
http://blog.sina.com.cn/s/blog_a6fb6cc90101gx30.html
http://blog.csdn.net/hustyangju/article/details/17799189
http://blog.chinaunix.net/uid-28394603-id-3775493.html (讨论回滚)

安装MySQL驱动:
http://blog.sina.com.cn/s/blog_74a7e56e01017s64.html

插件工作机制:
http://blog.csdn.net/dbzhang800/article/details/6543489
http://blog.csdn.net/csfreebird/article/details/17793161

SQLite学习手册
http://my.oschina.net/eechen/blog/84641
http://my.oschina.net/eechen/blog/84639
http://www.oschina.net/question/12_53183 (一个小时内学习 SQLite 数据库文章来源地址https://www.toymoban.com/news/detail-696463.html

到了这里,关于QT里使用sqlite的问题,好多坑的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Qt SQLite简单用法

    感觉自己老是会忘记需要百度,干脆直接记下来 Qt5.14.2 + MSVC2017(VS2019) Qt Creator: VS: . SQLite与其他数据库不同,其他数据库是静态数据类型,即创建时便确定以后插入的数据类型; 而SQLite是动态数据类型,即即使表格声明了类型,其插入不同的数据类型依然不受影响,只是会优

    2024年02月12日
    浏览(49)
  • QT Sqlite 内存模式 简单读写

    //本文描述了QT Sqlite 内存模式 ,使用QT 自带库文件,写入和读取。 //QT 6.2.4 MSVC2019调试通过。 //需要在pro文件中加入 QT += sql #include QCoreApplication #include QSqlDatabase #include QSqlQuery #include QDebug #include QSqlDriver //#include QSqlError //#include QStringList //#include QVariant static bool createConnection(

    2024年04月25日
    浏览(36)
  • QT程序设计多人聊天室(基于QT、sqlite3、TCP/IP)

    目录 技术路线 效果展示 程序主体 sqoperator.h mylogin.h myenroll.h chatinterface.h tips.h myapp.h ******************* sqoperator.cpp mylogin.cpp myenroll.cpp chatinterface.cpp tips.cpp myapp.cpp main.cpp widget.h widget.cpp main.cpp QT程序设计、sqlite数据库调用、TCP/IP客户端与服务端的搭建 通过次程序代码,可以学习如

    2024年02月09日
    浏览(64)
  • 5、QT中SQLite数据库的操作

    执行数据库操作的类: SQLite3的基础教程 ①、创建数据库的链接对象: ②、使用数据库驱动 ③、设置数据库的名称(创建一个数据库) ④、创建一张表 例子: 例子: ①、遍历所有数据并保存 ②、对比数据 例子: 查询数据的时候,必须要先把遍历的数据保存在sqlQuery类中

    2024年02月09日
    浏览(50)
  • QT-sql操作(sqlite数据库文件)

        #include SqlDriver 如名称,数据库驱动。 hasFeature : 检查驱动是否支持特定功能,如事务、批处理等。 isQuerySize : 驱动是否支持  QSqlQuery::size  函数。 open 、 close : 打开和关闭数据库连接。 isOpen : 判断数据库连接是否处于打开状态。 commitTransaction 、 rollbackTransaction :

    2024年02月04日
    浏览(54)
  • 软件设计开发笔记4:QT操作SQLite数据库

      有时候我们需要在软件中记录一些历史数据以便于对数据的查询。而我们希望软件不能太复杂,体量也不要太大,这个时候就需要如SQLite这样轻量级的数据库。这篇中我们就来讨论如何在使用QT开发应用是操作SQLite数据库。   SQLite是一款开源、轻量级、跨平台的数据库

    2024年02月09日
    浏览(65)
  • Win10下在Qt项目中配置SQlite3环境

    官网资源:SQLite Download Page 1、sqlite.h sqlite-amalgamation-3450000.zip (2.60 MiB) 2、sqlite3.def,sqlite3.dll  sqlite-dll-win-x64-3450000.zip (1.25 MiB) 3、 win10下安装sqlite3所需要文件 sqlite-tools-win-x64-3450000.zip https://www.sqlite.org/2024/sqlite-tools-win-x64-3450000.zip 将所有文件放在某一路径下的文件夹: 我就放

    2024年01月19日
    浏览(50)
  • 【QT+QGIS跨平台编译】之一:【sqlite+Qt跨平台编译】(一套代码、一套框架,跨平台编译)

    SQLite是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它包含在一个相对小的C库中。它是D.RichardHipp建立的公有领域项目。它的设计目标是嵌入式的,而且已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。它

    2024年01月22日
    浏览(65)
  • 基于Qt数据库项目实现(Sqlite3为例)|考查数据库、表格(QTableView 显示)(进阶)

    01 数据库表格(QTableView 显示) 本小节设计一个生活中的例子,使用数据库修改/查询员工的编号、姓名、年龄、性别与照片信息。 本例将数据库的内容显示到 QTableView 上。如果只是简单的显示数据库的内容到QTableView 上,可以使用下面的方法,此方法 QTableView 上可以看到

    2024年02月20日
    浏览(50)
  • Qt|使用QWebEngineView控件加载HTML使用及问题

    前一段时间项目中用到了加载html的功能,也遇到了一些比较奇奇怪怪的问题。 我的开发版本以及环境:VS2017 + Qt5.14.2 遇到的问题如下: 1:加载自己写的本地的html页面时,为什么第一次会很慢? 2:在一些电脑上加载html时,为什么会出现黑屏现象? 针对上述两个问题,开展

    2024年02月05日
    浏览(48)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包