🗄️ ADODB · 数据库连接类

🔹 光庆封装 · v3.8 📅 2026-05-12 ⚡ 基于 ADO / ADOX
SQL Server Access Excel MySQL SQLite Oracle PostgreSQL Cache 事务 存储过程
版本3.8
发布日期2026-05-12
核心ADODB.Connection · RecordSet · Command
设计模式对象封装 · 链式 · 便捷函数

godking.conn 是一个基于 ADO / ADOX 的 多数据库统一操作类,支持 SQL Server / Access / Excel / MySQL / SQLite / Oracle / PostgreSQL / Cache 等数据源。 封装了 连接管理、SQL 执行、记录集操作、存储过程、事务、批量插入、元数据查询 等完整能力。

🎯 设计哲学: 在 ADO 原生灵活性的基础上,提供 统一、简洁、安全的 API,并内置 SQL 格式化引擎(支持 ? / @ / ?? 占位符), 极大降低 SQL 拼接的复杂度和注入风险。同时支持 记录集对象 (myrs) 的便捷操作,让数据访问更优雅。
🧱 架构 · 类层次
// 核心类结构 class godking.conn { — connection (ADODB.Connection), catalog (ADOX.Catalog) — open, close, getError — exec, query, getTable, getRows, rs, each — createCommand, beginTrans, commitTrans, rollbackTrans — getTableNames, existsTable, truncateTable, dropTempTable — findTableObject, findProcedureObject, eachTableObject — insertByTable (批量插入) — format, escape, escapeId (SQL 格式化工具) } class conn.myrs { — rs_object (ADODB.RecordSet) — Eof, Bof, RecordCount, PageCount, PageSize, Position — Move, MoveFirst, MoveNext, MovePrevious, MoveLast — getValue, setValue, getType, getName, getDefinedSize — getTable, getPageTable, getNextRecordset — AddNew, UpDate, GetRows, Close } class conn.Command { — commandText, commandType, parameters — exec, executeNoRecords, executeStream — getTable, getRows, query, each — addParameter, bind }
功能全景
🔌 多数据源连接

统一 API 连接 SQL Server / Access / Excel / MySQL / SQLite / Oracle / PostgreSQL / Cache,支持 自定义连接串。

8+ 数据源ODBC/OLEDB统一接口
📝 SQL 格式化引擎

支持 ? (值转义) 、?? (标识符转义) 、@name (命名参数) 、@keys/@values 批量占位符,自动防注入。

防注入命名参数批量占位
📊 查询与结果集

query/getTable 返回字典/数组数组,getRows 按列返回,rs 返回可操作的记录集对象,支持分页、迭代。

多格式结果分页迭代器
⚙️ 命令与存储过程

createCommand 创建命令对象,支持 存储过程调用、参数绑定 (输入/输出/返回值),bind 批量绑定。

存储过程参数绑定输出参数
📦 批量操作

insertByTable 支持 500 条批量插入(自动事务),exec 返回影响行数,truncateTable 快速清表。

批量插入事务影响行数
🔍 元数据与结构

通过 ADOX.Catalog 获取 表列表、字段信息、存储过程列表,支持 existsTable / findTableObject

ADOX表结构字段信息
🔄 事务与错误

beginTrans / commitTrans / rollbackTrans 完整事务支持,getError 获取详细错误信息。

事务回滚错误捕获
🧰 工具函数

escape / escapeId 安全转义,dropTempTable 清理临时表,getRowCount 快速取影响行数。

转义临时表工具集
📌 版本迭代 · 关键里程碑
版本日期核心更新
2.1修正读取 xlsx 文件失败问题
2.2增加 rs.AbsolutePosition 属性
2.3exec 增加返回值:影响行数
2.4优化 rs 记录集对象操作
2.6增加 getError() 函数
2.7SQLite 数据库文件不存在则创建,优化格式化参数
2.8优化调整字段类型命名及智能提示
2.9解决 io.open() 导致 SQLite 连接失败问题
3.0建议升级 SQLite 驱动,解决中文路径问题
3.1format() 占位符优化,openAccess() 支持创建空数据库
3.2优化 openMysql() 连接参数
3.3格式化参数支持 @keys 和 @values
3.4增加 insertByTable() 函数
3.5createCommand().getParameterType() 参数为空时修复
3.6增加 openOracle() / openPostgreSQL() 连接函数
3.7addParameter() 增加 数据类型 参数
3.82026-05-12修改 getRows() 等相关函数的 @ 属性为表成员方式,便于调试
🌟 亮点与设计优势
📘 典型调用示例
// 连接 SQLite 数据库 var conn = godking.conn.openSqlite3("data.db"); // 创建表 conn.exec("CREATE TABLE IF NOT EXISTS users (id INTEGER PRIMARY KEY, name TEXT, age INTEGER)"); // 使用格式化占位符插入 conn.exec("INSERT INTO users(name, age) VALUES(?, ?)", "张三", 25); // 命名参数 + 批量键值占位 conn.exec("INSERT INTO users(@keys) VALUES(@values)", { name="李四", age=30 }); // 查询并返回数组 var data = conn.query("SELECT * FROM users WHERE age > ?", 20); for i,row in data { io.print(row.name, row.age); } // 记录集操作 var rs = conn.rs("SELECT * FROM users"); while(!rs.Eof) { io.print(rs.getValue("name"), rs.getValue("age")); rs.MoveNext(); } rs.close(); // 批量插入 var list = { {name="王五", age=28}, {name="赵六", age=32} }; list.fields = {"name", "age"}; conn.insertByTable("users", null, list); // 事务 conn.beginTrans(); conn.exec("UPDATE users SET age = age + 1"); conn.commitTrans(); conn.close();
📋 核心 API 速览
🔌 连接函数
open(connStr)
openSqlServer(ip,port,db,user,pwd)
openAccess(file,pwd,autocreate)
openExcel(file,hdr)
openMysql(ver,ip,port,db,user,pwd)
openSqlite3(file)
openOracle(Server,user,pwd)
openPostgreSQL(Server,db,port,user,pwd)
📝 SQL 格式化
format(sql, params) — 格式化 SQL
escape(v) — 值转义 (字符串/数字/日期/buffer/数组)
escapeId(v) — 标识符转义 ([字段名])
? 占位符 → escape
?? 占位符 → escapeId
@name 命名参数 → escape
@keys / @values 批量键值
🎯 典型应用场景
📊 数据导出/导入 📈 报表数据查询 🧾 批量数据处理 📋 Excel 数据读取 🔢 SQLite 本地存储 📂 Access 桌面应用 🔄 数据迁移工具 📎 存储过程调用 🛠️ 数据库管理工具
📌

综合评价

godking.conn 是 Aardio 生态中 最全面、最易用 的数据库操作封装之一。 它基于 ADO 原生组件,提供了 统一的多数据库访问接口,并内置了 强大的 SQL 格式化引擎,有效防止注入。 从 简单查询 到 批量操作、存储过程、事务管理,覆盖了日常开发中 90% 以上的数据库交互场景。 代码风格清晰,文档详尽,是 桌面应用、数据工具、自动化脚本 中数据库操作的理想选择。

👍 多库支持 👍 防注入 👍 批量操作 👍 持续迭代