Database 手册 · Chapter 1

Database 教程开始

本教程通过随 QMachineStudio 一同分发的 SampleProject/Database/DB_Sqlite 项目,从头到尾走一遍,边走边掌握数据库功能。

示例使用单个 SQLite 连接,是一个在画面上注册 · 修改 · 删除 订单作业历史(order_history 表)的小工具。本教程出现的所有代码片段都来自该项目的 RunScript/*.xms 文件。

示例项目位置

SampleProject/Database/DB_Sqlite/
├── DB_Sqlite.xmp                  # 项目文件(含 DatabaseOption)
├── XDatabase/
│   ├── connections.json           # 连接设置(与 DB Studio 同步)
│   └── LocalDB.db                 # 实际 SQLite 文件(自动生成)
└── RunScript/
    ├── Data.xms                   # DB_* 函数 (Open/Refresh/Insert/Update/Delete/...)
    ├── ViewRun.xms                # 按钮事件 (OnOpenClick / OnAddClick / ...)
    ├── ModifyDlg.xms              # 记录修改对话框
    └── (其他 Init / Mon / Event / ViewMain ...)

画面构成 — ViewRun

运行页面(ViewRun)由 6 个按钮和 1 个 XDataGrid 组成。

按钮调用函数行为
OpenData::DB_Open()连接 +(为空时)插入 5 条示例 + 刷新 DataGrid
AddData::DB_InsertSample()新增一条订单 INSERT
UpdateData::DB_UpdateSelected()将选中行标记为完成(end_time / result)
ModifyData::DB_OpenModifyDlg()打开对话框自由编辑,OK 时 UPDATE
DeleteData::DB_DeleteSelected()删除选中行
CloseData::DB_Close()断开连接 + 清空 DataGrid

顶部 Data::DbStatusText 标签(● OPEN / ● CLOSED)显示当前连接状态。

核心关键字 — DB["连接名"]

脚本中,数据库总是通过连接名访问。本示例的连接名为 local

// 打开连接
DB["local"].Open();
 
// SELECT 之后用 RowCount / GetRowArray 读取结果
DB["local"].RunSqlSelect("SELECT id, order_no, menu_name FROM order_history ORDER BY id ASC");
int rows = DB["local"].RowCount;
 
// 单值
int total = DB["local"].RunSqlScalarInt("SELECT COUNT(*) FROM order_history");
 
// 参数绑定(防止 SQL 注入)
array p[] = {""};  p.Clear();
p.Add("O1234"); p.Add("Latte"); p.Add(SYS.DateTimeString);
DB["local"].RunSqlQueryParam(
    "INSERT INTO order_history(order_no, menu_name, start_time) VALUES(?,?,?)",
    p);
 
// 事务
DB["local"].BeginTransaction();
DB["local"].RunSqlQueryParam(/* ... */);
if( DB["local"].Commit() == false ) DB["local"].Rollback();
 
// 关闭
DB["local"].Close();

IO["..."]MOTOR["..."] 等同样的命名索引惯用法,首次接触也不陌生。

学习路径

章节主题涉及示例代码
2连接设置 — connections.json 与项目选项DB_Sqlite.xmp DatabaseOption
3表结构 — order_historyDB_InsertInitialSamples
4用 DB Studio 的 SQL · Data 选项卡验证
5INSERT · UPDATE — 参数绑定与事务DB_InsertSample · DB_UpdateSelected
6SELECT — RowCount · GetRowArray · RunSqlScalarIntDB_Refresh
7DataGrid · ModifyDlg 绑定DispData · SelectIndex · Edit*
8按钮事件 — ViewRun 处理器OnOpenClick 等 6 个
9备份 · WAL · 运维检查点DatabaseOption.BackupFolder

建议在运行示例的同时跟随章节,亲自验证结果。