SQL数据库驱动
Qt SQL模块使用驱动插件(driver plugins)与数据库API进行通信。
由于Qt的SQL模块API是与数据库无关的,所以所有特定的数据库代码都包含在驱动程序中。Qt提供了一些驱动,你也可以自己添加驱动。
下表是Qt包含的驱动:
Driver name | DBMS |
---|---|
QDB2 | IBM DB2(v7.1 and above) |
QIBASE | Borland InterBase |
QMYSQL | MySQL |
QOCI | Oracle Call Interface Driver |
QOBC | Open Database Connectivity (ODBC) - Microsoft SQL Server and other ODBC-compliant databases |
QPSQL | PostgreSQL (versions 7.3 and above) |
QSQLITE2 | SQLite version 2 |
QSQLITE | SQLite version 3 |
QTDS | Sybase Adaptive Server (Note: obsolete from Qt 4.7) |
上面包含的数据中,SQLite是在所有平台具有最佳测试覆盖率和支持的进程内数据库系统。Oracle通过OCI,PostgreSQL和MySQL通过ODBC/本地驱动在Windows和Linux上也进行了良好的测试。至于对其他系统支持的完整性取决于客户端库的可用性和质量。
Note1:想构建一个驱动程序,你得有一个合适的DBMS(database management system)客户端。它提供了对DBMS的API访问,通常它们也绑定在一起。大部分安装程序也会让你安装"开发库(development libraries)",而你也需要它。这些库负责与DBMS的底层(low-level)通讯。
Note2:当你在开源项目中使用Qt,但数据库是商业数据库时,你需要验证客户端库与LGPL的兼容性。
SQLite
因为使用需求问题,经综合评定,我使用的是QSQLITE,即SQLite数据库。有关该数据库的详情可以看下面网站,
https://www.sqlite.org/version3.html
这边简要摘取几点我所关注的并且符合事实的它的特点,
特点
- 免费
The code for SQLite is in the public domain and is thus free for use for any purpose, commercial or private. - 成熟,应用广
SQLite is the most widely deployed database in the world. - 轻量级&快速
Faster than direct file I/O,打包不到6MB。 - 部署简单
- 跨平台
- Max DB size: 140 terabytes
定位&应用场景
SQLite is not directly comparable to client/server SQL database engines such as MySQL, Oracle, PostgreSQL, or SQL Server since SQLite is trying to solve a different problem.
SQLite的比较对象是fopen(),而不是C/S数据库引擎。它不太适合高并发、超大数据量的情况。下面会有一些具体的例子给你衡量什么时候用它。
When to use sqlite?
- 嵌入式设备和物联网
SQLite数据库不需要管理,所以它必须在没有专业技术员支持的情况下运行的设备中工作得非常好。所以它非常适合手机、机顶盒、电视、游戏机、照相机、手表、厨房电器、和往期、汽车、机床、飞机、远程传感器、无人机、医疗设备和机器人:“物联网”。 - APP的文件存储
SQLite通常用作桌面APP(版本控制器、财务分析工具、媒体编目、CAD包、记录保存程序等)的磁盘文件格式。 - 网站
SQLite用作大多数低到中等流量的网站,也非常适合。一般来说,一天点击率低于10万的网站都可以使用SQLite(这是保守故居,不是上限,经测试,SQLite可以处理十倍于此的流量)。拿SQLite网站距离,它每天处理40万-50万的HTTP请求,其中约15-20%是触及数据库动态页面。动态内容每个页面大概使用200条SQL语句。该VM(virtual machine)与其他23个服务器共享一个屋里服务器,但大多数情况下平均负载仍低于0.1。 - 数据分析
了解SQL的人可以用sqlite3命令行(或者第三方的SQLite访问软件)来分析大型数据集。原始数据可以从CSV导入,然后对数据切分,以生成大量的摘要报告。更复杂的分析可以用Tcl或Python写脚本(这两种脚本都内置了SQLite),或者R语言等其他语言。事实上,许多信息研究员都以这种方式使用SQLite。
当然,企业级C/S数据库也可以做到这点,不过,SQLite容易安装和使用。生成的数据库是单个文件,可以写入USB或者通过电子邮件发给同事。 - 还有很多,省略了