<add name="MySQLConnectionString"
connectionString="server=192.168.1.175;user id=root;password=huxj;Port=3306;database=test;"
providerName="Hxj.Data.MySql" />
providerName="Hxj.Data.MySql" 讓組件自動識別 MySQL 方言(反引號識別碼、LAST_INSERT_ID() 等)。
public static DbSession MySqlTest = new DbSession("MySQLConnectionString");
資料表 mtable:mid int AUTO_INCREMENT, mname varchar(50)。工具自動產生 Mtable 實體類別。
Mtable m = new Mtable();
m.Mname = Hxj.Common.StringHelper.GetRandomString();
int returnValue = Db.MySqlTest.Insert(m);
產生 SQL:
Text: INSERT INTO `mtable` (`mname`) VALUES (?p0); select last_insert_id();
Parameters: @p0 [String] = wzfJPJIDvKPP15HKRyxO4w==
自動使用反引號包裹識別碼,參數化查詢,並透過 select last_insert_id() 取回自增值。
using (DbBatch batch = Db.MySqlTest.BeginBatchConnection(5)) {
for (int i = 0; i < 10; i++) {
Mtable m = new Mtable();
m.Mname = Hxj.Common.StringHelper.GetRandomString();
batch.Insert(m);
}
} // 區塊結束自動 Commit
BeginBatchConnection(5) 表示累積 5 條 SQL 才發送一次,減少網路往返。MySQL 批次執行同樣支援參數化與自增值回填。
| 資料庫 | providerName 值 |
|---|---|
| SQL Server 2000 | System.Data.SqlClient / Hxj.Data.SqlServer |
| SQL Server 2005+ | Hxj.Data.SqlServer9 |
| MS Access | Hxj.Data.MsAccess |
| SQLite | System.Data.SQLite / Hxj.Data.Sqlite |
| Oracle | System.Data.OracleClient / Hxj.Data.Oracle |
| MySQL | Hxj.Data.MySql (v1.7 新增) |
Hxj.Data 持續擴展資料庫支援,核心 API 保持不變,切換資料庫只需改連線字串與 providerName。