首页| 论坛| 消息

标题:Qt编写安防视频监控系统49-多数据库支持
作者:liudianwu
日期:2021-07-22 10:50
内容:

## 一、前言
数据库设置模块,因为很多项目都会用到,索性这期间也将这玩意重新架构了一遍,对应的数据库组件同样重写了一遍,关于数据库的参数无非就6个,数据库类型(sqlite、mysql等)、数据库名称、主机地址、通信端口、用户名称、用户密码。默认提供了视频监控系统的数据库脚本文件(拓展名sql结尾的文件),单击初始化数据按钮可以对整个数据库进行新建和重置,相当于恢复出厂。
系统支持多种数据库,默认sqlite(Qt内置的数据库,无需安装),可选mysql、postgresql等,具体需要Qt对应的数据库插件支持,亲测下面的数据库。除了sqlite数据库外,其余数据库都需要输入数据库名称、主机地址、通信端口、用户名称、用户密码信息,输入好以后可以单击连接测试按钮测试下是否正常。默认提供的是mysql的动态库libmysql.dll,需要放到可执行文件同一目录,严格区分32位和64位的动态库。
```cpp
//数据库类型枚举
enum DbType {
DbType_ODBC = 0,//odbc数据源
DbType_Sqlite = 1,//sqlite数据库
DbType_MySql = 2, //mysql数据库
DbType_PostgreSQL = 3,//postgresql数据库
DbType_SqlServer = 4, //sqlserver数据库
DbType_Oracle = 5,//oracle数据库
DbType_KingBase = 6,//人大金仓数据库
DbType_Other = 255//其他数据库
};
```
数据库的几点经验
- 在数据库相关的应用中,如果仅仅是单机版本,没有特别的需要(比如领导指定,或者需要远程存放数据),强烈建议使用sqlite数据库,这是本人经过无数次的对比测试和N个商业项目应用得出的结论。
- Qt天生内置了sqlite数据库,只需要发布的时候带上插件就行(可以看到插件动态库文件比其他几种都要大,那是因为直接将数据库的源码都编译进去了,而其他只编译了中间通信交互的插件源码),其他数据库要么还要带上动态库,要么还需要创建数据源;
速度上,绝对无与伦比的出类拔萃,同样的数据库结构(表结构、索引等完全一致),查询速 ..

回复 发表
主题 版块