Qt数据库相关应用开发总结

目录
  • 一、前言
  • 二、数据库开发经验总结
  • 三、数据库连接说明
  • 四、数据库操作流程代码
  • 五、数据库综合应用组件

一、前言

近期花了两个多月时间,将数据库相关的代码重新封装成了各种轮子(这条路必须打通,打通以后,相关项目只需要引入这个组件pri即可),测试了从Qt4.7到Qt6.1的各种版本,测试了odbc、sqlite、mysql、postgresql、sqlserver、oracle、人大金仓等数据库,测试了本地连接、远程连接、阿里云连接等,测试了windows、linux、mac等系统,将所有项目数据库相关的代码全部更新了一遍。能够兼容这么多Qt版本和数据库插件以及测试验证系统,估计全网也没几个人,全国11W Qter开发者中应该也是最多不超过10人。

二、数据库开发经验总结

在数据库相关的应用中,如果仅仅是单机版本,没有特别的需要(比如领导指定,或者需要远程存放数据),强烈建议使用sqlite数据库,这是本人经过无数次的对比测试和N个商业项目应用得出的结论。

Qt天生内置了sqlite数据库,只需要发布的时候带上插件就行(可以看到插件动态库文件比其他几种都要大,那是因为直接将数据库的源码都编译进去了,而其他只编译了中间通信交互的插件源码),其他数据库要么还要带上动态库,要么还需要创建数据源;速度上,绝对无与伦比的出类拔萃,同样的数据库结构(表结构、索引等完全一致),查询速度和批量更新速度、数据库事务等,速度都是其他几种的至少3倍以上,而且随着数据量的增大对比越发明显;

几千万的数据量完全没问题,而且速度和性能都还可以,不要以讹传讹网上部分菜鸡说的不支持百万以上的数据量,本人亲测亿级别,数据量建议千万级别以下,着重注意数据库表和索引的设计;

其他数据库还要注意版本的区别,ODBC数据源形式还容易出错和执行失败;

sqlite数据库也有几个重大缺点:不支持加密,不支持网络访问,不支持部分数据库高级特性,不支持海量数据(亿级别以上),但是对于绝大部分Qt项目还是足够;

数据库支持友好度大致是 sqlite > postgresql > mysql > odbc ;

以上都是在Qt环境中个人测试得出的结论,结果未必正确,作为参考即可,其他编程环境比如C#、JAVA请忽略,也许差别可能在中间通信的效率造成的;

三、数据库连接说明

  1. Qt5默认提供的数据库插件包括了QSQLITE、QMYSQL、QPSQL、QODBC四种,后期版本比如5.12开始把mysql也移除了(可能是因为开源协议的问题),其中驱动打印中还有个QMYSQL3是表示mysql3旧版本,现在默认一般都mysql5以上,QPSQL7表示postgres7旧版本,现在默认一般都postgres9以上。
  2. 根据字面意思很容易理解QSQLITE用来连接sqlite数据库,QMYSQL用来连接mysql数据库,QPSQL用来连接postgres数据库,QODBC理论上可以用来连接任何支持ODBC数据源的数据库,比如access、sqlserver、mysql、postgres、oracle等。
  3. Qt4默认提供的数据库插件只有QSQLITE、QODBC两种,因为QODBC理论上可以用来连接任何支持ODBC数据源的数据库,只是通过了微软的数据源中间件,效率上可能会有损耗,所以在Qt5又新增了其他几个常用数据库的插件比如QMYSQL、QPSQL,而其他数据库由于协议的要求并没有提供对应的插件需要自行编译比如oracle。
  4. Qt内置了sqlite数据库,可以观察到qsqlite4.dll文件大小明显比其他数据库插件大很多,理论上光一个插件应该小很多才对,毕竟sqlite属于小型数据库,所以肯定是将sqlite的源码直接编译到插件了,所以我们在使用sqlite数据库的时候无需带一个sqlite.dll,而使用mysql则需要带上libmysql.dll。
  5. 使用mysql、postgres等支持远程访问的数据库的时候,并不需要本地安装数据库,只需要发布程序的时候带上对应数据库的动态库即可,比如mysql对应带上libmysql.dll即可,这样程序指定数据库主机地址就可以连接上,比如阿里云的mysql、postgres等云端数据库。
  6. mysql、posgrest等支持远程连接的数据库,默认安装以后出于安全性考虑只支持本地访问,需要做设置才能支持远程访问,mysql需要增加用户root@%即主机设置为%,postgres需要打开安装目录下的C:\PostgreSQL\10\data\pg_hba.conf文件,增加一行 host all all 192.168.1.0/24 md5 表示支持192.168.1.1到192.168.1.255的IP访问,同时将C:\PostgreSQL\10\data\postgresql.conf改成listen_addresses = '*'表示支持所有地址,具体这个的含义可以自行搜索。
  7. mysql数据库通信的默认端口是3306,postgres的是5432,这些端口都可以在安装的时候或者后期更改。
  8. 数据库也有位数的区别,比如你连接的是64位的数据库那就需要用64位的Qt以及64位的数据库插件和对应的动态库文件,位数一定要完全一致才行,否则连不上,很多人会在这个地方摔一跤。除了位数的区别可能还要注意版本的区别,毕竟数据库一直在更新升级换代,有些版本变动比较大,未必Qt发布版本的时候对应就支持最新的数据库,所以一般建议用稍微老一点的数据库版本,比如mysql本人一直用5.6,测试到现在Qt5.13版本都支持。
  9. 一般的软件默认都只需要连接一个数据库,所以建议直接在程序启动以后就打开好数据库,然后其他需要用到数据库的地方就执行即可,最后程序关闭的时候关闭数据库。很多初学者每次增删改查都打开数据库执行完成操作以后然后关闭数据库,这样效率极其低下。如果需要连接多个数据库,则以数据库连接名称作为区分,Qt支持同时多个数据库连接的,数据库跨线程不安全,要加锁,所以建议在哪个线程使用到的数据库就在那个线程中打开,而不要主线程打开数据库子线程使用数据库,很可能会出问题。Qt5.10开始增加了数据库跨线程使用的安全性检查,运行时会打印提示。
  10. 创建数据库、创建表、创建索引、初始化数据等这些都可以通过执行sql语句来实现,强烈建议在对常用的数据量比较多的表创建表的时候要创建索引,在大量的数据查询更新操作的时候先启动数据库事务,执行完成以后提交数据库事务。

四、数据库操作流程代码

void MainWindow::testDb()
{
    //打印当前Qt对应支持的数据库驱动名称
    qDebug() << QSqlDatabase::drivers();

    //创建数据库对象,驱动名称根据打印的填写,"QSQLITE", "QMYSQL", "QMYSQL3", "QODBC", "QODBC3", "QPSQL", "QPSQL7"
    QSqlDatabase db = QSqlDatabase::addDatabase("QPSQL");
    //设置数据库参数,要查看Qt文档是否支持该数据库,一般建议默认的就好不用设置
    //db.setConnectOptions("MYSQL_OPT_RECONNECT=1;MYSQL_OPT_CONNECT_TIMEOUT=1;");
    //设置数据库的主机地址
    db.setHostName("127.0.0.1");
    //设置数据库通信端口,默认值  mysql:3306  postgres:5432  sqlserver:1433
    db.setPort(5433);
    //设置数据库名称,默认值  mysql:mysql  postgres:postgres  sqlserver:master
    //如果是sqlite数据库只需要设置这个参数即可,其余参数都不用设置,因为sqlite不需要主机端口和用户
    //参数内容为数据库文件的路径 db.setDatabaseName("c:/test.db");
    db.setDatabaseName("postgres");
    //设置登录用户名称,默认值  mysql:root  postgres:postgres  sqlserver:sa
    db.setUserName("postgres");
    //设置登录用户密码
    db.setPassword("admin");
    //打开数据库,如果失败打印错误信息
    if (!db.open()) {
        qDebug() << db.lastError();
        return;
    }

    //执行增删改查
    //常规查询语句
    QString sql = "select UserName,UserPwd from UserInfo";
    //带条件+排序+分组的查询语句
    sql = "select UserName,UserPwd from UserInfo where UserName='admin' order by UserName asc group by UserGroup";

    //构建查询对象,传入sql语句查询,可以先判断执行成功与否再来取值
    QSqlQuery query;
    if (query.exec(sql)) {
        //循环取出所有查询结果,对应结果是QVariant类型可以自行to到其他类型
        while(query.next()) {
            qDebug() << query.value(0).toString() << query.value(1).toString();
        }
    }

    //添加数据,拼接字符串的形式比较通用,还有占位符的形式
    sql = "insert into UserInfo(UserName,UserPwd) values('ceshi', '12345')";
    //删除数据,如果不加where条件则表示删除整个表的数据
    sql = "delete from UserInfo where UserName='ceshi'";
    //更新数据,如果不加where条件则表示更新整个表的数据
    sql = "update UserInfo set UserPwd='admin123' where UserName='ceshi'";

    //可以复用上面的QSqlQuery对象,也可以重新new,复用的话需要先调用clear
    query.clear();
    //添加+删除+更新 数据只需要知道执行成功与否就行
    if (!query.exec(sql)) {
        qDebug() << "执行sql语句失败";
    }

    //关闭数据库,程序自动关闭的时候也会关闭,所以只是用一个数据库的情况下无需手动关闭
    db.close();
}

五、数据库综合应用组件

(一)功能特点

  1. 同时支持多种数据库比如odbc、sqlite、mysql、postgresql、sqlserver、oracle、人大金仓等。
  2. 一个数据库类即可管理本地数据库通信,也支持远程数据库通信等。
  3. 数据库线程支持执行各种sql语句,包括单条和批量。
  4. 组件中的所有类打印信息、错误信息、执行结果都信号发出去。
  5. 集成数据库通用翻页类(负责具体处理逻辑),搭配分页导航控件(负责外观),形成超级牛逼的翻页控件。
  6. 集成数据库自动清理类,设定最大记录数后台自动清理早期数据。
  7. 集成自定义委托类,支持复选框、文本框、下拉框、日期框、微调框、进度条等。
  8. 同时支持Qt4-Qt6,亲测Qt4.6到Qt6.1任意版本,任意系统和编译器。
  9. 本组件无故障 360天7乘24小时 运行在至少上万个现场,商业级别品质保证。
  10. 每个类都对应完整详细的使用示例,注释详细,非常适合阅读学习。
  11. 可以作为独立的程序运行,比如自动清理早期数据,同步数据到云端。
  12. 全部线程处理,不卡界面,自动重连数据库。
  13. 普通测试情况,sqlite数据库,数据库发生器每秒钟插入1000条记录约0.003秒钟,同时自动清理数据类每秒钟删除1000条记录约0.13秒,不同线程互不干扰。

(二)数据库通信管理线程类

  1. 可设置数据库类型,支持多种数据库类型。
  2. 数据库类型包括但不限于odbc、sqlite、mysql、postgresql、sqlserver、oracle、人大金仓等。
  3. 可设置数据库连接信息包括主机地址、用户信息等。
  4. 具有自动重连机制,可设置是否检查连接以及检查间隔。
  5. 支持单条sql语句队列,一般用于查询返回数据,每次插入一条执行一条。
  6. 支持多条sql语句队列,一般用于远程提交数据,每次插入一条执行多条。
  7. 支持批量sql语句队列,一般用于批量更新数据,每次插入多条执行多条。
  8. 可设置队列最大数量,限定排队处理的sql语句集合。
  9. 通过信号发出 打印信息、错误信息、查询结果。

(三)数据库通用翻页类

  1. 可设置每页多少行记录,自动按照设定的值进行分页。
  2. 可设置要查询的表名、字段集合、条件语句、排序语句。
  3. 可设置第一页、上一页、下一页、末一页、翻页按钮。
  4. 可设置当前页、总页数、总记录数、每页记录数、查询用时标签页。
  5. 多线程查询总记录数,数据量巨大时候不会卡主界面。
  6. 建议条件字段用整型类型的主键,速度极快。
  7. 提供查询结果返回信号,包括当前页、总页数、总记录数、查询用时等信息。
  8. 可设置所有列或者某一列对齐样式例如居中或者右对齐。
  9. 可增加列用于标识该条记录,设定列的位置、标题、宽度。
  10. 提供函数直接执行第一页、上一页、下一页、末一页。
  11. 提供函数直接跳转到指定页。
  12. 根据是否第一页、末一页自动禁用对应的按钮。
  13. 本控件是翻页功能类,和翻页控件navpage完美搭配,形成超级牛逼的翻页控件。

(四)分页导航控件

  1. 可设置页码按钮的个数。
  2. 可设置字体大小。
  3. 可设置边框圆角角度、大小、颜色。
  4. 可设置正常状态背景颜色、文字颜色。
  5. 可识别悬停状态背景颜色、文字颜色。
  6. 可设置按下状态背景颜色、文字颜色。
  7. 可设置选中状态背景颜色、文字颜色。
  8. 可设置导航位置居中对齐、左对齐、右对齐。
  9. 可设置是否显示提示标签控件。
  10. 自动计算总页码数显示隐藏多余按钮。
  11. 自动计算切换页码导航。
  12. 和分页导航功能类无缝对接完美融合。

(五)自动清理数据线程类

  1. 可设置要清理的对应数据库连接名称和表名。
  2. 可设置条件字段。
  3. 可设置排序字段。
  4. 可设置最大保留的记录数。
  5. 可设置执行自动清理的间隔。
  6. 后期支持多个数据库和多个表。
  7. 建议条件字段用数字类型的主键,速度极快。
  8. 增加统计用字段名称设置。
  9. 增加自动清理文件夹,超过大小自动删除文件夹中早期文件。

(六)自定义委托全家桶

  1. 可设置多种委托类型,例如复选框、文本框、下拉框、日期框、微调框、进度条等。
  2. 可设置是否密文显示,一般用于文本框。
  3. 可设置是否允许编辑,一般用于下拉框。
  4. 可设置是否禁用,一般用来禁用某列。
  5. 可设置数据集合,比如下拉框数据集合。
  6. 提供值变化信号,比方说下拉框值改动触发。
  7. 可设置数据校验自动产生不同的图标。
  8. 支持设置校验列、校验规则、校验值、校验成功图标、校验失败图标、图标大小。
  9. 可设置校验数据产生不同的背景颜色和文字颜色。
  10. 校验规则支持 == > >= < <= != contains,非常丰富。
  11. 复选框自动居中而不是左侧,切换选中状态发送对应的信号。
  12. 可设置颜色委托,自动根据颜色值绘制背景颜色,自动设置最佳文本颜色。
  13. 可设置按钮委托,自动根据值生成多个按钮,按钮按下发送对应的信号。
  14. 当设置了委托列时自动绘制选中背景色和文字颜色。
  15. 可设置关键字对照表绘制关键字比如原始数据是 0-禁用 1-启用。
  16. 可设置复选框对应的映射选中不选中关键字。
  17. 根据不同的委托类型绘制,可以依葫芦画瓢自行增加自己的委托。
  18. 所有功能封装成1个类,核心代码不到500行,使用极其方便友好。

(七)效果图

(八)体验地址

体验地址:https://pan.baidu.com/s/15ZKAlptW-rDcNq8zlzdYLg  提取码:uyes 文件名:bin_dbtool.zip

国内站点:https://gitee.com/feiyangqingyun

国际站点:https://github.com/feiyangqingyun

以上就是Qt数据库相关应用开发总结的详细内容,更多关于Qt数据库开发的资料请关注我们其它相关文章!

(0)

相关推荐

  • Qt数据库应用之实现数据打印到纸张

    目录 一.前言 二.功能特点 三.体验地址 四.效果图 五.相关代码 一.前言 数据能够打印到pdf文件,当然可以打印到纸张,而且使用qprinter默认就是打印到纸张的,上一篇文章写得功能是打印到pdf,其实还要单独特殊设置打印到文件,并指定格式为pdf.不指定输出文件和格式默认就是打印到纸张,关于Qt打印内容到纸张,网上的办法非常多,比如有些直接用painter绘制,逐步控制分页打印,个人还是喜欢html格式的内容传入,因为html格式相当灵活,可控范围相当大,而且整齐,甚至可以先直接输出到

  • C/C++ Qt数据库与SqlTableModel组件应用教程

    SqlTableModel 组件可以将数据库中的特定字段动态显示在TableView表格组件中,通常设置QSqlTableModel类的变量作为数据模型后就可以显示数据表内容,界面组件中则通过QDataWidgetMapper类实例设置为与某个数据库字段相关联,则可以实现自动显示字段的内容,不仅是显示,其还支持动态增删改查等各种复杂操作,期间不需要使用任何SQL语句. 首先绘制好UI界面,本次案例界面稍显复杂,左侧是一个TableView组件,其他地方均为LineEdit组件与Button组件.

  • Qt数据库应用之实现数据图文混排

    目录 一.前言 二.功能特点 三.体验地址 四.效果图 五.相关代码 一.前言 除了能够打印基本的文字信息数据到pdf和纸张,越来越多的应用需求还要求能够导出图片,并且要支持图文混排,相当于doc文档类似,当然也不会是太复杂的,类似于打印报表一样,有表格形式的文字描述,也有对应的图片插入其中,图文混排的应用场景还真不少比如医疗行业输出诊断结果往往都带了图片.于是针对这个需求特意开辟了新的类DataCreat专门生成报表的数据,将生成好的数据体直接传入给DataPrint类即可,如果有各种各样的不

  • C/C++ Qt数据库SqlRelationalTable关联表详解

    在上一篇博文中详细介绍了SqlTableModle组件是如何使用的,本篇博文将介绍SqlRelationalTable关联表组件,该组件其实是SqlTableModle组件的扩展类,SqlRelationalTable组件可以关联某个主表中的外键,例如将主表中的某个字段与附加表中的特定字段相关联起来,QSqlRelation(关联表名,关联ID,名称)就是用来实现多表之间快速关联的. 首先我们创建两张表,一张Student表存储学生名字以及学生课程号,另一张Departments存储每个编号所对

  • Qt数据库应用之数据打印到pdf

    目录 一.前言 二.功能特点 三.体验地址 四.效果图 五.相关代码 一.前言 自从数据可以导出到xls,又有客户提出了不同的需求,比如既然可以将数据导出到xls,那是否可以导出到pdf文件呢?因为xls打开以后用户可以修改数据造假之类的,而pdf默认是不可编辑的,除非借助专业的工具,所以如果想要限定用户导出数据不能被更改,那导出pdf是最佳选择.写程序往往都是这样,一步步慢慢增加,随着用户需求的增加,程序量也越来越多,轮子组件也越来越多.往往客户提需求的时候,一定要认真聆听,尤其是一线用户,实

  • Qt数据库应用之实现数据的导入与导出

    目录 一.前言 二.功能特点 三.体验地址 四.效果图 五.相关代码 一.前言 在经历过大大小小十几个甚至几十个纯QtWidget项目后,涉及到数据库相关的项目,几乎都有一个需求,将少量的信息数据比如设备信息.防区信息等,导出到文件保存好,然后用户可以打开该表格进行编辑,编辑完成后保存,再重新导入到软件中,这样相当于安排专人录入数据,而不是在软件中一个个新增效率低了些,甚至有些软件运行在嵌入式板子上或者一些特殊场景,不大方便现场添加编辑信息,如果是提供模板之类的让用户添加好,然后再一次性导入,这

  • Qt数据库应用之实现通用数据生成器

    目录 一.前言 二.功能特点 三.体验地址 四.效果图 五.相关代码 一.前言 有两种应用场景需要用到数据生成器,一种是需要测试数据库性能,比如在100万条和1000万条记录的时候对比查询或更新语句执行耗时,一种是随机模拟生成一堆数据,用来测试程序的性能,看下程序中到了百万千万级别的数据量的时候,程序的代码执行是否受影响,影响有大等.很多人觉得sqlite数据库性能超过几十万就不行,于是亲自用这个数据发生器随机模拟生成了一亿条记录,测试下来发现性能有损失,但是不像传说中的垃圾,起码还是完全可用的

  • C/C++ Qt 数据库与Chart历史数据展示

    在前面的博文中具体介绍了QChart组件是如何绘制各种通用的二维图形的,本章内容将继续延申一个新的知识点,通过数据库存储某一段时间节点数据的走向,当用户通过编辑框提交查询记录时,程序自动过滤出该时间节点下所有的数据,并将该数据动态绘制到图形组件内,实现动态查询图形的功能. 首先通过如下代码,创建Times表,表内记录有某个主机某个时间节点下的数值: #include <QCoreApplication> #include <QSqlDatabase> #include <QS

  • Qt数据库相关应用开发总结

    目录 一.前言 二.数据库开发经验总结 三.数据库连接说明 四.数据库操作流程代码 五.数据库综合应用组件 一.前言 近期花了两个多月时间,将数据库相关的代码重新封装成了各种轮子(这条路必须打通,打通以后,相关项目只需要引入这个组件pri即可),测试了从Qt4.7到Qt6.1的各种版本,测试了odbc.sqlite.mysql.postgresql.sqlserver.oracle.人大金仓等数据库,测试了本地连接.远程连接.阿里云连接等,测试了windows.linux.mac等系统,将所有项

  • Qt数据库应用之实现通用数据库清理

    目录 一.前言 二.功能特点 三.体验地址 四.效果图 五.相关代码 一.前言 很多项目如果需要存储很多日志记录比如运行日志,时间长了记录数量非常多,数据库体积不断增大,对应数据库表的增删改查的效率不断降低,为了消除这几个影响,需要有一套机制,不断将早期的数据清理,清理的规则比如可以指定表名.字段名.时间范围等. 日志记录的清理一方面是为了保证查询效率,毕竟数据量大了明显影响查询速度,一方面也是为了节约磁盘存储空间,毕竟存储空间有限,尤其是嵌入式板子,容量一般不会很大,记录无限制的存储下去会不断

  • Qt数据库应用之通用数据库同步

    目录 一.前言 二.功能特点 三.体验地址 四.效果图 五.相关代码 一.前言 数据库同步的主要功能是将本地的数据库记录同步到远程的数据库,其中数据库类型不限,比如本地是sqlite数据库,远程可以是mysql数据库,本地是mysql数据库,远程也可以是postgresql数据库,只要数据库设置的时候设定好就行.这样做相当于就是通过程序的方式将数据库记录上传同步,还有一种机制是通过直接数据库上设置热备份啥的,个人还是习惯通过程序的方式,自主可控,比如可以自定义同步哪个表,哪部分数据需要同步. 有

  • Qt数据库应用之超级自定义委托

    目录 一.前言 二.功能特点 三.体验地址 四.效果图 五.相关代码 一.前言 在QTableView.QTreeView以及对于衍生的QTableWidget.QTreeWidget类中,需要用到自定义委托的情形很多,比如提供下拉框选择,进度条展示下载进度啥的,默认的单元格是没有这些效果的,需要自己单独用委托的形式来展示,自定义委托一般有两种UI形式,一种是单元格一直显示对应的委托控件比如复选框.按钮.进度条等,一种是用户鼠标按下才显示对应的委托控件,鼠标离开自动恢复原有单元格的形式. 在设计

  • Qt数据库应用之实现通用数据库分页

    目录 一.前言 二.功能特点 三.体验地址 四.效果图 五.相关代码 一.前言 数据库分页展示,在所有的涉及到数据库记录的项目中都是需要的,除了简单的设备信息表.用户信息表这种很少几条几十条数据量的表除外,其余的日志记录表等都需要分页展示数据,少量的数据可以滚动条下拉查看完,超过百条以上的一般建议要加上分页的功能处理,不然用户查看起来明显不舒服,体验不友好,最明显的例子就是网页的搜索结果,一次性展示上万条,不仅是多余的增加了查询的压力,而且用户往往只关注最前面的几页记录,再比如查询报警记录,一般

  • Qt数据库应用之实现通用数据库采集

    目录 一.前言 二.功能特点 三.体验地址 四.效果图 五.相关代码 一.前言 数据库采集对应的就是上一篇文章的数据库同步,数据库同步到云端数据库以后,app.网页.小程序啥的要数据的话,可以通过执行http请求拿到数据,http接收应答这边程序一般最简单可以用php写,几行代码即可,比如根据请求的参数构建需要执行的sql语句,执行以后将结果json形式返回即可. 通过Qt程序去做数据库采集有多种方式,即可直接连接数据库然后绑定数据库表到QSqlTableModel,然后不断调用select方法

  • Qt数据库应用之实现通用数据库请求

    目录 一.前言 二.功能特点 三.体验地址 四.效果图 五.相关代码 一.前言 数据库请求是在数据库采集的基础上,换成http请求的形式来获取数据,这样就脱离了数据库组件,而采用的通用的http请求的形式从数据库拿数据库,这个通用性就非常广泛了,比如对方用java采集到设备的数据存入数据库,另外一个区域是用的c#采集的数据入库,然后统一规则统一规范约定一个请求机制,定时器或者线程取执行请求,拿到的json数据,挨个取出来结果,数组集合的方式发信号出去. 之前写过的可视化大屏电子看板程序,采用的也

  • Python开发SQLite3数据库相关操作详解【连接,查询,插入,更新,删除,关闭等】

    本文实例讲述了Python开发SQLite3数据库相关操作.分享给大家供大家参考,具体如下: '''SQLite数据库是一款非常小巧的嵌入式开源数据库软件,也就是说 没有独立的维护进程,所有的维护都来自于程序本身. 在python中,使用sqlite3创建数据库的连接,当我们指定的数据库文件不存在的时候 连接对象会自动创建数据库文件:如果数据库文件已经存在,则连接对象不会再创建 数据库文件,而是直接打开该数据库文件. 连接对象可以是硬盘上面的数据库文件,也可以是建立在内存中的,在内存中的数据库

  • C/C++ Qt 数据库与ComBox实现多级联动示例代码

    Qt中的SQL数据库组件可以与ComBox组件形成多级联动效果,在日常开发中多级联动效果应用非常广泛,例如当我们选择指定用户时,我们让其在另一个ComBox组件中列举出该用户所维护的主机列表,又或者当用户选择省份时,自动列举出该省份下面的城市列表等. 今天给大家分享二级ComBox菜单如何与数据库形成联动,在进行联动之前需要创建两张表,表结构内容介绍如下: User表:存储指定用户的ID号与用户名 UserAddressList表:与User表中的用户名相关联,存储该用户所管理的主机列表信息 v

随机推荐