Qt数据库之数据库和驱动
来源:互联网 发布:知乎玲珑邪僧 编辑:程序博客网 时间:2024/06/02 11:03
Qt 提供了 sql 模块
,使用统一的接口访问不同的数据库
,也既是说即使更换了数据库,访问数据库的代码基本上不用修改。不过有些 SQL 语句需要根据不同的数据库做相应的调整。如果 SQL 语句是嵌入在 Qt 代码里的,修改后需要重新编译工程。但如果 SQL 语句不是写在代码里的,那么修改了 SQL 语句后不需要重新编译工程就能生效,会有专门的章节介绍怎么实现这样的技术。
Qt 支持的数据库
Qt 支持访问很多不同的数据库,例如 Sqlite, MySQL, SqlServer 等,但是 Qt 具体都支持哪些数据库呢?通过下面介绍的方法就可以找到答案。
1. 在 QtCreator 的帮助中搜索 QSqlDatabase
,找到
这里列出了 Qt 目前支持的所有数据库,但是并不代表在我们的程序里就可以直接使用代码访问它们了,这里的所谓支持,是指 Qt 提供了访问这些数据库的插件的代码,其中有些已经编译成了可以直接使用的插件,有的没有编译。如果想要访问的数据库不包含在里面,我们就需要按照 Qt 的规范去开发数据库驱动插件,至于怎么做可以在 QtCreator 帮助里搜索SQL Database Drivers
,在最下面可以找到How to Write Your Own Database Driver
。
2. 有哪些数据库插件已经编译好可用:
- 在
plugins/sqldrivers
目录中列出了所有编译好的数据库插件,下图为 OS X 里的截图: - 使用代码:
qDebug() << QSqlDatabase::drivers()
,输出:("QSQLITE", "QMYSQL", "QMYSQL3", "QPSQL", "QPSQL7")
,访问 Sqlite, MySql, MySql3, PostgreSql, PostgreSql7 不需要我们自己编译驱动插件,但是如果想访问 SqlServer 的话,就得我们自己编译驱动了。
编译数据库驱动插件:
例如我们想访问 Oracle,Qt 已经提供了 Oracle 驱动插件的代码,但是在 sqldrivers 目录里并没有其编译好的可用插件,那么我们就需要自己去编译驱动插件了。编译的方法可以在 QtCreator 帮助里搜索SQL Database Drivers
,找到How to Build the OCI Plugin on Windows
,How to Build the OCI Plugin on Unix and Mac OS X
。
按照 QtCreator 帮助里的说明也不一定就能编译成功,因为有些细节里面没有提到,这有可能就是编译失败的因素之一。编译不同数据库的驱动的方法不尽相同,就算是同一个数据库,在不同的 Qt 版本,在 Windows 和 OS X 下的准备和编译步骤都可能相差很大,需要的时候,可以通过网络搜索,尝试其他人记录的准备和编译步骤。
- Qt数据库之数据库和驱动
- Qt数据库之添加MySQL驱动插件
- Qt数据库之添加MySQL驱动插件
- Qt数据库之添加MySQL数据库驱动插件
- Qt检测数据库驱动
- QT数据库驱动和多国语言驱动部署注意事项
- QT编译MySql数据库驱动
- Qt编译PostgreSQL数据库驱动
- Qt mysql数据库驱动编译
- Qt安装Mysql数据库驱动
- QT编译Mysql数据库驱动
- Qt编译Oracle数据库驱动
- Qt之编译MySQL数据库驱动(MSVC)
- Qt之编译MySQL数据库驱动(MSVC)
- Qt数据库添加MySQL数据库驱动插件
- Qt mingw编译MySQL驱动和连接MySQL数据库
- QT之数据库 和 GraphicsView使用
- java之数据库驱动
- sqlite错误 The database disk image is malformed database disk image is malformed 可解决
- archlinux - 多系统引导
- sqlite关于The database disk image is malformed问题的解决
- vector--list--deque对比
- IE下使用uploadify上传报:Uploadify-Script5007 Object expected
- Qt数据库之数据库和驱动
- 人类是怎么一步一步地教会机器说人话的?告诉你语音合成技术的前世今生
- 绕过WAF检测WebShell通信
- 【storm kafka】RROR fetching topic metadata for topics [Set(order)] from broker [ArrayBuffer(id:0,host
- 从头思考并查集
- 搭建基于GTID的复制方式
- Halcon-Matlab 图像匹配
- [cocos2dx]在windows7下搭建Cocos2D-X win32开发环境
- STL容器类map学习