不只会写网页:Seed-2.1-pro 用 C++/Qt 给我造了个数据库客户端

发布时间:2026/10/5 9:43:33
不只会写网页:Seed-2.1-pro 用 C++/Qt 给我造了个数据库客户端 目录前言一、需求来自每天的工作不是为了炫技二、从空工程开始在 Qt Creator 里真编译、真运行三、最难的一关让 Qt 真正“认识” MySQL四、一次“看图”驱动的跨文件重构五、它不只能做“千篇一律的 web”前言如果以为 Seed-2.1-pro 写代码只会生成千篇一律的网页那你可能和我一样差点低估它了。这次在豆包工作的桌面模式里选用Seed-2.1-pro我没让它做网站而是丢给它一个挺“传统”的需求用C Qt5写一个跑在 Windows 上的原生数据库 GUI 客户端实现过程中简直是一气呵成没啥阻碍。图 1 豆包使用界面先看看成品现在它已经是一个工程完整、双击即可运行的绿色小程序 DbGuiTool不是只看不能用的演示能新建/保存连接、浏览表与视图、在表格里直接增删改查、执行多条 SQL、导出 CSVMySQL 下能列出一个实例里账号可见的全部数据库按连接 → 数据库 → 表/视图三级展开双击表就能编辑。图 2 最终主界面成品代码仓库https://github.com/MagicalGuy/dbtool可运行程序下载地址https://download.csdn.net/download/linshantang/93497095一、需求来自每天的工作不是为了炫技我所在的业务有不少线上库后端、运维和数据运营一天到晚要连库核对数据某个用户的金币余额对不对、一笔订单有没有落库、账号状态正不正常。可公司商业数据库客户端的商业化使用受限临时查几条数据常常要到处找各种数据库连接工具软件总算找到了还不太好用总之被工具卡住的滋味真不好受。我就想这种高频、轻量的查询需求能不能自己造一个顺手的目标很明确——把日常那几个最常用的动作连接、看表、改数据、跑 SQL做顺手不必为了查一条记录到处去找开源软件。二、从空工程开始在 Qt Creator 里真编译、真运行我平时就用VS 或 Qt Creator做 C Qt 开发这次选择在 Qt Creator 里打开工程 dbtool.pro、选择Desktop Qt 5.13.0 MSVC2015 64bit套件并按习惯切到Release配置运行。界面全部用代码写不依赖 .ui 文件数据层基于 Qt 自带的 QtSql表数据用 QSqlTableModel 直接编辑保存连接信息持久化到 INI还加了一个 --selftest 无界面自检不弹窗就能回归增删改查和驱动加载。分工也挺自然我在 Qt Creator 里看代码、切套件、点绿色三角运行它在命令行里编译、跑自检、用 windeployqt 打包两边对着同一个工程协作。它不是停在嘴上的 demo——每改一轮都真实编译、跑自检、看结果最后产出不依赖开发环境、双击就能跑的绿色版。图 3 Qt Creator打开项目三、最难的一关让 Qt 真正“认识” MySQL我装的 Qt 5.13MSVC2015 64 位官方包不带 QMYSQL 驱动新建连接的类型下拉里只有 SQLite、ODBC、PostgreSQL。图 4 新建数据库连接我把这张截图发给它选了“自行编译原生驱动”这条路它便在桌面环境里把整件事跑完下载并解压 MySQL 8.0.46 的 Windows x64 开发库头文件 导入库用 qmake 传入MYSQL_INCDIR/MYSQL_LIBDIR再jom sub-mysql编译配置阶段出现Checking for MySQL... yes把qsqlmysql.dll放进 Qt 的sqldrivers插件目录把libmysql.dll和两个 OpenSSL 运行库放进bin在只保留 System32 的干净 PATH 下验证能独立启动。其中中途运行一些脚本或指令也会请求执行经过用户允许才会运行这个也很符合安全角度。图 5 豆包指令运行前后对比很直接改之前下拉里根本没有 MySQL这一套跑完下拉里出现了 QMYSQL自检报告打印 QMYSQL YES。下载、解压、编译、拷贝 dll、干净环境复现都是它跑命令、读日志、出错就回头改完成的。图 67 编译 qsqlmysql 驱动、自检报告中QMYSQL YES四、一次“看图”驱动的跨文件重构这一段最能体现它怎么把“看懂画面”接进编码。我没写需求文档只发了两张截图。第一张右键表“新建查询”自动生成的是 SELECT * FROM cdb_user_coin;——MySQL 默认模式下双引号是字符串而且没有库名前缀。它看懂了界面和语句改成 MySQL 标准反引号并补上库名SELECT * FROMm13_en_urs.cdb_user_coin;。图 8 查询语句第二张是编辑连接的截图我顺势提了个更接近 Navicat 习惯的需求“数据库”栏应该可选留空就登录实例、列出账号下所有库而不是一个连接只能绑死一个库。它做了跨 6 个文件的重构根连接用于 SHOW DATABASES每个打开的数据库开一条独立连接避免多个标签页互相干扰树改成三级、库内表清单在展开时才懒加载。更让我放心的是它没有在改完代码就宣布“好了”而是先连我的远程库做了一遍只读验证不指定库名登录实例成功SHOW DATABASES返回 27 个数据库为m13_en_urs单独开连接列出 96 张表其中包含cdb_user_coin限定名查询SELECT COUNT(*) FROMm13_en_urs.cdb_user_coin 返回 1132 行。数字对上了这个功能才算完。图 9 一个连接下展开多个数据库、库内再分表/视图五、它不只能做“千篇一律的 web”整个过程我都待在豆包工作里用大白话下任务它直接在我的电脑上建工程、写代码、调编译器、跑命令、打包再把真实运行结果摆到我面前我切到 Qt Creator 里点运行就能看、能上手不用在聊天窗口、IDE 和文件夹之间来回倒腾。体会很深的几点它看得懂我发的界面截图把视觉理解用在了改代码上面对跨 6 个文件的长程重构没有丢上下文更愿意跑命令、拿真实结果取证而不是凭猜测下结论C 这种要配套件、编译驱动、处理字符编码和 dll 依赖的硬核桌面开发也能端到端推进——MSVC 中文乱码、Release/Debug 区别、插件搜索路径这些很“脏”的细节都一起兜住了。它没有替代我做工程判断“每个库开一条连接”“系统库要不要显示”是我们一起定的但它把大量重复、繁琐、容易让人半途而废的活儿接了过去。一个曾被授权席位卡过的普通开发就这样拥有了属于自己的数据库客户端。比起再生成一个差不多的网页这种“把身边真实工具造出来”的感觉要实在得多。