Skip to content

链式 CURD 操作

本文档详细介绍 cDataBase 类的链式查询构建器,提供类似 ORM 的优雅 API,无需手写复杂 SQL。

详细文档

主题说明
条件方法Where, OrWhere, WhereIn, WhereLike, WhereNull 等
排序/分组/连接/选择OrderBy, GroupBy, Having, Join, Columns, Distinct
限制与分页Limit, Offset, Page
终结方法RowCreate, RowRead, RowUpdate, RowDelete, Field
聚合终结方法RowCount, RowExists, RowPluck, RowMax/Min/Sum/Avg
综合示例与最佳实践实战示例、与传统SQL对比、FAQ、最佳实践

概述

什么是链式 CURD

链式 CURD 是 cDataBase 类提供的一种优雅的数据库操作方式,通过方法链(Method Chaining)逐步构建 SQL 语句,最终以终结方法执行操作。

核心优势

  • 代码可读性高 - 每个链式方法对应一个 SQL 子句,语义清晰
  • 类型安全 - 方法参数自动转义,减少 SQL 注入风险
  • 跨数据库兼容 - 自动适配 MySQL / SQL Server / Access 的语法差异
  • 零手写 SQL - 排序、分组、分页、JOIN 等常用操作无需拼接字符串

设计理念

链式调用流程:

  起始方法 → 条件方法(可叠加) → 修饰方法(可叠加) → 终结方法
  ─────────   ───────────────   ───────────────   ──────────
  Table()     Where()           Columns()          RowRead
              WhereIn()         OrderBy()           RowCreate
              WhereLike()       GroupBy()           RowUpdate
              OrWhere()         Join()              RowDelete
              ...               Limit()             RowCount
                                Page()              RowExists
                                                    RowPluck
                                                    RowMax/Min/Sum/Avg

链式构建器架构

内部状态变量

链式构建器通过一组私有变量累积各子句,终结方法执行后自动重置(ResetBuilder):

变量对应 SQL 子句设置方法
pvTableNameFROMTable()
pvSelectFieldsSELECT 列列表Columns()
pvIsDistinctSELECT DISTINCTDistinct()
pvWhereConditionWHERE (AND 条件)Where(), WhereLike()
pvOrWhereConditionWHERE (OR 条件)OrWhere()
pvWhereInClausesWHERE IN/NOT INWhereIn(), WhereNotIn()
pvWhereBetweenClausesWHERE BETWEENWhereBetween()
pvWhereNullClausesWHERE IS NULLWhereNull(), WhereNotNull()
pvOrderByClauseORDER BYOrderBy(), OrderByDesc(), OrderByRaw()
pvGroupByClauseGROUP BYGroupBy()
pvHavingClauseHAVINGHaving()
pvJoinClausesJOINJoin(), LeftJoin(), RightJoin()
pvLimitValueLIMITLimit()
pvOffsetValueOFFSETOffset()
pvPageNum/LimitADO 分页Page()
pvFieldsINSERT/UPDATE 值Field()

SQL 拼接逻辑

终结方法调用 BuildSelectSql() 拼接完整 SQL:

sql
SELECT [DISTINCT] {字段} FROM {表名} {JOIN子句}
WHERE {Where + WhereIn + WhereBetween + WhereNull} [OR (OrWhere)]
GROUP BY {分组} HAVING {过滤}
ORDER BY {排序}
LIMIT/OFFSET 或 ADO 分页

起始方法

Table - 设置操作表

设置当前操作的表名,所有链式 CURD 操作的起点。

语法

vb
Function Table(ByVal TableName As String) As cDataBase

示例

vb
' 基本用法
db.Table("users").RowRead

' 配合 Where 查询
db.Table("users").Where("age>?", 18).RowRead

' 配合 Field 插入
db.Table("users").Field("name", "张三").Field("age", 25).RowCreate

完整方法速查表

链式方法(返回 cDataBase,可继续链式调用)

类别方法说明对应 SQL 子句
起始Table(表名)设置操作表FROM
条件Where(条件,参数...)AND 条件WHERE
OrWhere(条件,参数...)OR 条件WHERE ... OR (...)
WhereIn(字段,值列表)IN 条件WHERE 字段 IN (...)
WhereNotIn(字段,值列表)NOT IN 条件WHERE 字段 NOT IN (...)
WhereBetween(字段,V1,V2)BETWEEN 条件WHERE 字段 BETWEEN V1 AND V2
WhereNotBetween(字段,V1,V2)NOT BETWEENWHERE 字段 NOT BETWEEN ...
WhereLike(字段,模式)LIKE 模糊匹配WHERE 字段 LIKE '模式'
WhereNotLike(字段,模式)NOT LIKEWHERE 字段 NOT LIKE '模式'
WhereNull(字段)IS NULLWHERE 字段 IS NULL
WhereNotNull(字段)IS NOT NULLWHERE 字段 IS NOT NULL
排序OrderBy(字段)ASC 排序ORDER BY 字段 ASC
OrderByDesc(字段)DESC 排序ORDER BY 字段 DESC
OrderByRaw(子句)自定义排序ORDER BY 子句
分组GroupBy(字段)分组GROUP BY 字段
Having(条件)分组过滤HAVING 条件
连接Join(表,ON条件)INNER JOININNER JOIN 表 ON 条件
LeftJoin(表,ON条件)LEFT JOINLEFT JOIN 表 ON 条件
RightJoin(表,ON条件)RIGHT JOINRIGHT JOIN 表 ON 条件
选择Columns(列...)指定查询列SELECT 列
Distinct()去重SELECT DISTINCT
Field(字段,值)设置字段值INSERT/UPDATE 值
限制Limit(N)限制条数LIMIT N
Offset(N)偏移量OFFSET N
Page(页码,每页数)ADO分页Rs.PageSize + AbsolutePage

终结方法(执行操作,重置构建器)

方法返回值说明
RowCreatecDataBase创建新行
RowReadcDataBase查询行(结果在 Rs)
RowUpdatecDataBase更新行
RowDeletecDataBase删除行
RowCountLong统计行数
RowExistsBoolean判断是否存在
RowPluck(字段)Collection提取单列值列表
RowMax(字段)Variant聚合 MAX
RowMin(字段)Variant聚合 MIN
RowSum(字段)Variant聚合 SUM
RowAvg(字段)Variant聚合 AVG

最后更新: 2026-06-26

VB6及其LOGO版权为微软公司所有