cDataBase Class Library Development Documentation
cDataBase Class Library - VB6 database operation wrapper based on ADO, developed by 215879458@qq.com
Table of Contents
Overview
cDataBase is a lightweight database operation wrapper designed for VB6, fully based on ADO (ActiveX Data Objects), providing a simple and easy-to-use API with complete feature support.
Key Features
- Multi-database Support - Supports Access, MySQL, SQL Server, CSV, Custom (custom DSN) and other databases
- Connection Pool Management - Supports multi-database connection instance pool, dynamic database object management
- Chained Query Builder - ORM-like chained API, supports Where/OrderBy/GroupBy/Join/Limit/Page, zero handwritten SQL
- Pagination Support - Built-in pagination based on ADO native pagination properties, supports all database types
- Parameterized Queries - Supports parameterized queries, effectively preventing SQL injection attacks
- Transaction Processing - Complete transaction support with automatic rollback mechanism
- Asynchronous Execution - Supports asynchronous SQL execution for improved performance
- Result Set Conversion - Automatically converts Recordset to cCollection (Dictionary nested)
- Utility Methods - Rich utility methods to simplify common operations
Key Features
1. Simple API Design
The library uses chained call design with clean, readable code:
vb
' Use after referencing VBMAN.dll in VB6 project
Dim db As New VBMAN.cDataBase
' Connect to database
db.Connect VBMAN.enumDbType_MsSql, "127.0.0.1,1433", "sa", "password", "mydb"
' Query data (chained call)
db.Sql("SELECT * FROM users WHERE id > ?").Param("id", 100).QueryParam
' Get results
Dim i As Long
For i = 1 To db.Rows.Count
Debug.Print db.Rows(i)("name")
Next2. Multi-database Type Support
vb
' SQL Server
db.Connect VBMAN.enumDbType_MsSql, "127.0.0.1,1433", "sa", "pwd", "master"
' MySQL
db.Connect VBMAN.enumDbType_Mysql, "localhost:3306", "root", "pwd", "testdb"
' Access
db.Connect VBMAN.enumDbType_Access, "C:\data\mydb.mdb"
' CSV
db.Connect VBMAN.enumDbType_Csv, "C:\data\csvfiles"3. Pagination Support
vb
' Page 2, 10 items per page
db.Sql("SELECT * FROM users").Page(2, 10).Query
' Automatically converts to pagination SQL for corresponding database
' SQL Server: OFFSET 10 ROWS FETCH NEXT 10 ROWS ONLY
' MySQL: LIMIT 10 OFFSET 104. Parameterized Queries (SQL Injection Prevention)
vb
' Use parameterized queries, safe and reliable
db.Sql("SELECT * FROM users WHERE name = ? AND age > ?") _
.Param("name", "Zhang San", adVarChar) _
.Param("age", 18, adInteger) _
.QueryParam5. Transaction Processing
vb
' Start transaction
db.TransBegin
' Execute multiple operations
db.Sql("INSERT INTO users (name) VALUES ('user1')").Exec
db.Sql("INSERT INTO users (name) VALUES ('user2')").Exec
' Commit transaction (auto rollback on failure)
If db.TransCommit Then
Debug.Print "Transaction committed successfully"
End If6. Automatic Result Set Conversion
vb
' Automatically converted to Dictionary collection after query
db.Sql("SELECT * FROM users").Fetch
' Access first row data
Debug.Print db.Row("name")
Debug.Print db.Row("age")
' Iterate all rows
Dim i As Long
For i = 1 To db.Rows.Count
Debug.Print db.Rows(i)("name")
Next7. Connection Pool Management
vb
' Create connection instance
Dim db1 As VBMAN.cDataBase
Set db1 = db.ConnInst("db1")
' Use independent connection instance
db1.Sql("SELECT * FROM table1").Query
' Remove connection instance
db.ConnInstRemove "db1"Architecture Design
Class Hierarchy
cDataBase (Database Operation Class)
├── Connection (ADODB.Connection) - Database connection
├── Recordset (ADODB.Recordset) - Recordset
├── Command (ADODB.Command) - Parameterized query command
├── Rows (cCollection) - Query result set (Dictionary nested)
├── Row (Dictionary) - Current row data
├── DatabaseType (enumDbType) - Current database type
├── IsCloneInstance (Boolean) - Whether it's a connection pool clone instance
└── Connections (Dictionary) - Connection poolObject Relationship Diagram
Database Object (cDataBase)
├── Main Connection (Conn)
│ ├── Recordset (Rs)
│ └── Command (Cmd) - Parameterized query
└── Connection Pool (Connections)
├── Connection Instance 1 (cDataBase)
│ └── Independent connection
├── Connection Instance 2 (cDataBase)
│ └── Independent connection
└── ...Data Flow
Query Flow
1. Sql("SELECT ...") - Set SQL statement
2. Page(1, 10) - Optional: Set pagination
3. Query() - Execute query
4. Rs - Get Recordset
5. Rows - Auto-convert to Dictionary collectionChained Builder Flow
1. Table("table_name") - Set operation table (starting method)
2. Where/WhereIn/OrderBy/GroupBy/Join/Limit/Page - Stack chained conditions
3. RowRead/RowCreate/RowUpdate/RowDelete/RowCount/RowExists - Terminal methods
4. Rs - Get Recordset (after RowRead)
5. Rows - Auto-convert to Dictionary collection (with RowRead + Fetch)Execution Flow
1. Sql("INSERT/UPDATE/DELETE ...") - Set SQL statement
2. Param("name", value) - Optional: Add parameters
3. Exec() / ExecParam() - Execute operation
4. LastInsertId() - Optional: Get last inserted IDParameterized Query + Fetch Flow
1. Sql("SELECT ... WHERE id = ?") - Set SQL statement
2. Param("id", value, type) - Add parameters
3. FetchParam() - Execute parameterized query + auto-convert to Rows/RowDocumentation Index
| Document | Description |
|---|---|
| Quick Start | Quick start guide |
| Connection Management | Database connection and connection pool management |
| Chained CRUD - Overview | Overview & quick reference |
| Chained CRUD - Condition Methods | Where/OrWhere/WhereIn/WhereLike etc. |
| Chained CRUD - Sort/Group/Join/Selection | OrderBy/GroupBy/Having/Join/Columns/Distinct |
| Chained CRUD - Limit & Pagination | Limit/Offset/Page |
| Chained CRUD - Terminal Methods | RowCreate/RowRead/RowUpdate/RowDelete/Field |
| Chained CRUD - Aggregate Methods | RowCount/RowExists/RowPluck/RowMax/Min/Sum/Avg |
| Chained CRUD - Examples & Best Practices | SQL comparison, FAQ, best practices |
| Query Operations | Detailed SELECT query explanation |
| Execute Operations | INSERT, UPDATE, DELETE operations |
| Transaction Processing | Complete transaction usage guide |
| Pagination | Detailed pagination explanation |
| Parameterized Queries | Parameterized queries and SQL injection prevention |
| Utility Methods | Common utility methods explanation |
| Advanced Features | Advanced features and best practices |
Dependencies
| Component | Description |
|---|---|
| Microsoft ActiveX Data Objects 2.8 Library | ADO core library, must be referenced |
| Microsoft Scripting Runtime | Dictionary object support |
| cCollection | Rows result set type (VBMAN internal) |
| ToolsList.bas | Recordset to cCollection conversion utility |
| ToolsFso.bas | File path handling utility |
Compatibility
- VB6/VBA - Fully compatible
- Windows - Windows XP and above
- Database - Access, MySQL, SQL Server, CSV, Custom (custom DSN)
- ADO Version - ADO 2.8 and above
License
Developed based on VBMAN project
Author
Database Library: 215879458@qq.com
Last Updated: 2026-01-21