统一调用格式:using(var db = DB.Executor("数据库类型",连接字符串或文件路径))。
Execute:查询返回 DataTable;增/删/改/DDL 返回 int 受影响行数。
DDL:数据定义语言(建表、删表、修改表结构);DML:数据操纵语言(INSERT/UPDATE/DELETE);DQL:查询语句(SELECT)
INTEGER、字符串 TEXT。
INTEGER:SQLite / PostgreSQL 为原生类型名;MySQL / SQLServer 是 INT 的官方同义词,四库全部直接可用。
TEXT:四个真实数据库均原生支持;SQLServer 的 TEXT 属遗留(已弃用)类型,能建表能用,但生产环境建议换成 NVARCHAR(MAX)。
TEXT/INTEGER 归一化为内部 STRING / INT 处理(原文档写 STRING / INT,现统一文档写法为 TEXT / INTEGER)。
INTEGER 为 8 字节(等价 BIGINT,范围 ±9.2×10¹⁸);MySQL / PostgreSQL / SQLServer 的 INTEGER 为 4 字节(范围 ±21 亿)。
本文档示例数值均在此范围内;若某字段可能超过 21 亿,SQLite 用 INTEGER 即可,其余三库请改用 BIGINT。
using(var db = DB.Executor("EXCEL", @"D:\db\NEW EXCEL.xlsx"))
{
// 建表
db.Execute("CREATE TABLE IF NOT EXISTS Users (Id INTEGER, Name TEXT, Age INTEGER)");
// 新增
db.Execute("INSERT INTO Users (Id, Name, Age) VALUES (11, 'AAA', 20)");
// 修改
int upd = (int)db.Execute("UPDATE Users SET Age=21 WHERE Id=11");
// 删除
int del = (int)db.Execute("DELETE FROM Users WHERE Id=11");
// 查询
DataTable dt = (DataTable)db.Execute("SELECT * FROM Users WHERE Age>18");
dataGridView1.DataSource = dt;
}
using(var db = DB.Executor("JSON", @"D:\db\app.json"))
{
// 建表
db.Execute("CREATE TABLE IF NOT EXISTS Users (Id INTEGER, Name TEXT, Age INTEGER)");
// 新增
db.Execute("INSERT INTO Users (Id, Name, Age) VALUES (11, 'AAA', 20)");
// 修改
int upd = (int)db.Execute("UPDATE Users SET Age=21 WHERE Id=11");
// 删除
int del = (int)db.Execute("DELETE FROM Users WHERE Id=11");
// 查询
DataTable dt = (DataTable)db.Execute("SELECT * FROM Users WHERE Age>18");
dataGridView1.DataSource = dt;
}
Id INTEGER PRIMARY KEY AUTOINCREMENTusing(var db = DB.Executor("SQLITE", @"D:\db\app.db"))
{
// 建表
db.Execute("CREATE TABLE IF NOT EXISTS Users (Id INTEGER, Name TEXT, Age INTEGER)");
// 新增
db.Execute("INSERT INTO Users (Id, Name, Age) VALUES (11, 'AAA', 20)");
// 修改
int upd = (int)db.Execute("UPDATE Users SET Age=21 WHERE Id=11");
// 删除
int del = (int)db.Execute("DELETE FROM Users WHERE Id=11");
// 查询
DataTable dt = (DataTable)db.Execute("SELECT * FROM Users WHERE Age>18");
dataGridView1.DataSource = dt;
}
INTEGER 即 INT 的同义词;TEXT 原生支持(最大 64KB,utf8mb4 下约 16K 字符)。using(var db = DB.Executor("MYSQL", "Server=127.0.0.1;Port=3306;Database=pchmi;Uid=root;Pwd=123456;"))
{
// 建表
db.Execute("CREATE TABLE IF NOT EXISTS Users (Id INTEGER, Name TEXT, Age INTEGER)");
// 新增
db.Execute("INSERT INTO Users (Id, Name, Age) VALUES (11, 'AAA', 20)");
// 修改
int upd = (int)db.Execute("UPDATE Users SET Age=21 WHERE Id=11");
// 删除
int del = (int)db.Execute("DELETE FROM Users WHERE Id=11");
// 查询
DataTable dt = (DataTable)db.Execute("SELECT * FROM Users WHERE Age>18");
dataGridView1.DataSource = dt;
}
INTEGER 为 INT 同义词可用;TEXT 属遗留(已弃用)类型,本文档为统一观感保留 TEXT,生产环境建议改用 NVARCHAR(MAX):Name NVARCHAR(MAX)。using(var db = DB.Executor("SQLSERVER", "Data Source=127.0.0.1;Initial Catalog=pchmi;User ID=sa;Password=123456;TrustServerCertificate=True"))
{
// 建表(SqlServer兼容写法)
db.Execute("IF OBJECT_ID('Users','U') IS NULL CREATE TABLE Users (Id INTEGER, Name TEXT, Age INTEGER)");
// 新增
db.Execute("INSERT INTO Users (Id, Name, Age) VALUES (11, 'AAA', 20)");
// 修改
int upd = (int)db.Execute("UPDATE Users SET Age=21 WHERE Id=11");
// 删除
int del = (int)db.Execute("DELETE FROM Users WHERE Id=11");
// 查询
DataTable dt = (DataTable)db.Execute("SELECT * FROM Users WHERE Age>18");
dataGridView1.DataSource = dt;
}
INTEGER / TEXT 均为原生类型,无需再区分 INT 与 VARCHAR。using(var db = DB.Executor("POSTGRESQL", "Host=127.0.0.1;Port=5432;Database=postgres;Username=postgres;Password=123456;Timeout=15"))
{
// 建表:全部小写,不要双引号
db.Execute("CREATE TABLE IF NOT EXISTS users (id INTEGER, name TEXT, age INTEGER)");
// 新增
db.Execute("INSERT INTO users (id, name, age) VALUES (11, 'AAA', 20)");
// 修改
int upd = (int)db.Execute("UPDATE users SET age=21 WHERE id=11");
// 删除
int del = (int)db.Execute("DELETE FROM users WHERE id=11");
// 查询
DataTable dt = (DataTable)db.Execute("SELECT * FROM users WHERE age>18");
dataGridView1.DataSource = dt;
}
| 数据源 | 类型参数 | 连接串/路径 | 表名写法 | 统一类型(整数/字符串) | 重要注意事项 |
|---|---|---|---|---|---|
| JSON | "JSON" | 文件路径 | 任意 | INTEGER / TEXT | 简化SQL引擎,需内部归一化 STRING/INT |
| EXCEL | "EXCEL" | 文件路径 | 任意 | INTEGER / TEXT | 简化SQL引擎,需内部归一化 STRING/INT |
| SQLITE | "SQLITE" | .db 文件路径 | 任意 | INTEGER / TEXT | 类型系统宽松;INTEGER 为 8 字节 |
| MYSQL | "MYSQL" | 数据库连接串 | 任意 | INTEGER / TEXT | INTEGER=INT 同义词;TEXT 最大 64KB |
| SQLSERVER | "SQLSERVER" | 数据库连接串 | 任意 | INTEGER / TEXT | 无 CREATE TABLE IF NOT EXISTS;TEXT 已弃用,生产用 NVARCHAR(MAX) |
| POSTGRESQL | "POSTGRESQL" | 数据库连接串 | 建议全小写 | INTEGER / TEXT | 双引号会锁定大小写 |