首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> 關於.NET

IsLine Framework 系列之五:DataProvider 資料存取(中)—— 連線配置、雙模式操作與 DBProvider 擴充

     編輯:關於.NET

本文深入解析 DataProvider 的資料庫連線配置(節點式與簡易雙模式)、面向連線與非連線雙操作模式、OracleProvider/SqlProvider 完整方法表、以及DBProvider 反射工廠擴充機制。

1. 資料庫連線配置雙模式

1.1 節點式配置(結構化、支援加密)

<IsLine.Data.Configuration>
  <DataBaseConnection>
    <DBType>IsLine.Data.DataTypeEnum.DataBaseType.SqlServer</DBType>
    <Server>Server IP</Server>
    <UserID>sa</UserID>
    <PwdType>Cryptography.Decrypting</PwdType> <!-- None / Decrypting / StrengthDecrypting -->
    <Pwd>111111</Pwd>
    <DataBase>UML</DataBase> <!-- SqlServer only -->
  </DataBaseConnection>
</IsLine.Data.Configuration>

Oracle 範例:

<DBType>IsLine.Data.Configuration.OracleConnectString</DBType>
<Server>TNS別名</Server>
<OtherPlus>Provider=MSDAORA.1; Persist Security Info=False;</OtherPlus> <!-- Oracle Only -->

1.2 簡易配置(appSettings 直給連線字串)

<add key="IsLine.Data.Configuration.SqlServerConnectString" 
     value="Data Source=Server IP;User;Password=111111;Integrated Security=no;Enlist=false;Pooling=true;" />
<add key="IsLine.Data.Configuration.OracleConnectString" 
     value="Data Source=TNS別名;User;Password=111111;Integrated Security=no;Enlist=false;Pooling=true;" />

2. 雙操作模式:面向連線 vs 非連線

模式適用操作資源管理呼叫方式
面向連線 回傳 DataSet、DataReader、DataAdapter 需實例化 Provider,用畢呼叫 Dispose() 釋放所有資源 new OracleProvider().ExecuteDataSet(...)
非連線 單純執行 SQL/預存程式 靜態方法,無需資源釋放 OracleProvider.ExecuteNonQuery(sql)

3. OracleProvider / SqlProvider 核心方法表

方法說明需實例化
ExecuteScalar (4 重載)回傳首欄首列值否
ExecuteNonQuery (5 重載)執行 SQL/SP,回傳影響列數否
ExecuteReader (5 重載)回傳 DataReader是
ExecuteDataSet (5 重載)回傳 DataSet是
ExecuteDataAdapter (5 重載)回傳 DataAdapter是
Dispose()釋放所有資源是
conn / cmd指定實例專用 Connection/Command是

3.1 關鍵參數說明

參數型別說明
cmdTextstringSQL 語句或預存程式名稱
connectionKeystringweb.config 連線字串 key(多資料庫切換用)
IsUsingOracleTransactionbool啟用交易,交易內 SQL 用 ! 串接
cmdTypeCommandTypeText / StoredProcedure
commandParametersparams OracleParameter[]參數陣列
connectionOracleConnection已建立的連線物件
srcTablestringDataSet 填充表名

4. 實戰範例集錦

// 1. 簡單 SQL 執行
OracleProvider.ExecuteNonQuery(sql);

// 2. 交易批次執行
OracleProvider.ExecuteNonQuery(sql, true, CommandType.Text, null);

// 3. 執行預存程式帶參數
var param = new OracleParameter[2];
param[0] = new OracleParameter("P1", OracleType.VarChar, 32) { Value = "a" };
param[1] = new OracleParameter("P2", OracleType.VarChar, 20) { Value = "b" };
OracleProvider.ExecuteNonQuery("SP_Name", null, CommandType.StoredProcedure, param);

// 4. 取得 DataReader
new OracleProvider().ExecuteReader(sql);

// 5. 取得 DataSet
new OracleProvider().ExecuteDataSet(sql);

// 6. 指定連線字串取得 DataSet
new OracleProvider().ExecuteDataSet(sql, "ConnectionStr", 0);

// 7. 預存程式回傳 DataSet
new OracleProvider().ExecuteDataSet(sql, CommandType.StoredProcedure, "TestTable", null);

5. DBProvider:第三方資料庫反射工廠

  • 實作 IDBOperater 介面工廠,部署至約定路徑
  • 配置 IsLine.Provider.DataProvider.CfgDllName 指定 DLL
  • 命名空間:IsLine.Provider.DataProvider,類別:DBFactory,方法:GetDbProvider() : DbProviderFactory
  • 封裝 Microsoft DbProviderFactory,呼叫方式與 OracleProvider/SqlProvider 相同
  • 更換資料庫只需替換 DLL,主程式零修改

DBProvider 反射架構

6. 結語

DataProvider 以「雙配置模式適應不同團隊習慣、雙操作模式精準匹配場景、標準化方法表降低認知負擔、反射工廠支援第三方資料庫」四大設計,構建了高內聚、低耦合、強擴充性的資料存取層。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved