前言:本系列文章,旨在講述研發一個中大型項目所需要了解的一系列“基本構件”,并提供這些“基本構件”的【最簡單】、【最快速】使用方法!!(并不深究技術原理) 本系列文章适合有初/中級.NET知識的同學閱讀。
相關下載下傳:
DeveloperSharp.dll元件
常見的ORM技術(比如:Entity Framework,Dapper,SqlSugar,NHibernate,等…),它們不是在做Sql語句的程式化變種,就是在做Sql語句的面向對象化。缺點顯而易見:把簡單的Sql語句複雜化、不倫不類、不符合标準的各家自定義文法格式、無統一标準難以大規模推廣應用…
而ADO.NET也存在操作複雜、不同類型資料庫(SqlServer、MySql、Oracle、等)操作代碼需要重構等缺點。
本文要介紹的主角DeveloperSharp架構中的ORM資料庫通路技術,則巧妙的規避了上述各種缺點,提供了一套折中且完善的解決方案,在IDataAccess接口中被實作。
IDataAccess所在的命名空間是:DeveloperSharp.Framework.QueryEngine。
它主要提供了如下四大功能:
(1) 執行Sql語句
(2) 執行Sp存儲過程
(3) 建立參數(輸入/輸出/傳回)
(4) 事務
它初始化的代碼如下:
using DeveloperSharp.Framework.QueryEngine;
--------------------------
DatabaseInfo DIF;
DIF.DatabaseType = DatabaseType.SQLServer; //設定資料庫類型
DIF.ConnectionString = "Server=localhost;Database=YZZ;Uid=sa;Pwd=123";
IDataAccess IDA = DataAccessFactory.Create(DIF);
下面給出一個結合“Sql語句+參數+事務”的使用示例,代碼如下:
try
{
//開啟事務
IDA.TransactionBegin();
//執行帶參數的Sql語句
var newQuantity = IDA.CreateParameterInput("newQuantity", DbType.Int32, 506);
var newName = IDA.CreateParameterInput("newName", DbType.String, 50, "帽子");
IDA.SqlExecuteNonQuery("update t_Order set Quantity=@newQuantity where Id=1", newQuantity);
IDA.SqlExecuteNonQuery("update t_Order set Quantity=@newQuantity,Name=@newName where Id=3", newQuantity, newName);
//完成事務
IDA.TransactionCommit();
}
catch
{
//復原事務
IDA.TransactionRollBack();
}
注意:建立參數時使用DbType類型,就是為了能在不同類型資料庫(SqlServer、MySql、Oracle、等)之間透明切換!
IDataAccess内擁有的詳細功能方法說明如下:
DatabaseType
聲明:DatabaseType DatabaseType{get;}
用途:擷取資料庫類型
傳回:DatabaseType -- 資料庫類型枚舉
ConnectionString
聲明:string ConnectionString{get;}
用途:擷取資料庫連結字元串
傳回:string -- 資料庫連結字元串
CreateParameterInput
聲明:IDataParameter CreateParameterInput(string name, DbType type, int size, object val)
用途:建立輸入參數
參數:(1)string name -- 參數名
(2)DbType type -- 參數類型
(3)int size -- 參數大小
(4)object val --參數值
傳回:IDataParameter -- 輸入參數
CreateParameterInput
聲明:IDataParameter CreateParameterInput(string name, DbType type, object val)
用途:建立輸入參數
參數:(1)string name -- 參數名
(2)DbType type -- 參數類型
(3)object val --參數值
傳回:IDataParameter -- 輸入參數
CreateParameterOutput
聲明:IDataParameter CreateParameterOutput(string name, DbType type, int size)
用途:建立輸出參數
參數:(1)string name --參數名
(2)DbType type --參數類型
(3)int size --參數大小
傳回:IDataParameter -- 輸出參數
CreateParameterOutput
聲明:IDataParameter CreateParameterOutput(string name, DbType type)
用途:建立輸出參數
參數:(1)string name --參數名
(2)DbType type --參數類型
傳回:IDataParameter -- 輸出參數
CreateParameterReturn()
聲明:IDataParameter CreateParameterReturn()
用途:建立傳回參數
參數:(無)
傳回:IDataParameter -- 傳回參數
TransactionBegin
聲明:void TransactionBegin()
用途:開啟事務
參數:(無)
傳回:(無)
TransactionCommit
聲明:void TransactionCommit()
用途:完成事務
參數:(無)
傳回:(無)
TransactionRollBack
聲明:void TransactionRollBack
用途:復原事務
參數:(無)
傳回:(無)
SqlExecuteNonQuery
聲明:int SqlExecuteNonQuery(string cmdText)
用途:執行Sql指令文本,傳回受影響的行數
參數:(1)string cmdText -- Sql指令文本
傳回:int --受影響的行數
SqlExecuteNonQuery
聲明:int SqlExecuteNonQuery(string cmdText , params IDataParameter[] cmdParameters)
用途:執行Sql指令文本,傳回受影響的行數
參數:(1)string cmdText -- Sql指令文本
(2)params IDataParameter[] cmdParameters --指令參數數組
傳回:int --受影響的行數
SpExecuteNonQuery
聲明:int SpExecuteNonQuery(string cmdText)
用途:執行Store Procedure指令文本,傳回受影響的行數
參數:(1)string cmdText --Store Procedure指令文本
傳回:int --受影響的行數
SpExecuteNonQuery
聲明:int SpExecuteNonQuery(string cmdText, params IDataParameter[] cmdParameters)
用途:執行Store Procedure指令文本,傳回受影響的行數
參數:(1)string cmdText -- Store Procedure指令文本
(2)params IDataParameter[] cmdParameters --指令參數數組
傳回:int --受影響的行數
SqlExecuteReader
聲明:IDataReader SqlExecuteReader(string cmdText)
用途:執行Sql指令文本,傳回DataReader對象
參數:(1)string cmdText -- Sql指令文本
傳回:IDataReader -- DataReader對象
SqlExecuteReader
聲明:IDataReader SqlExecuteReader (string cmdText, params IDataParameter[] cmdParameters)
用途:執行Sql指令文本,傳回DataReader對象
參數:(1)string cmdText -- Sql指令文本
(2)params IDataParameter[] cmdParameters --指令參數數組
傳回:IDataReader -- DataReader對象
SpExecuteReader
聲明:IDataReader SpExecuteReader(string cmdText)
用途:執行Store Procedure指令文本,傳回DataReader對象
參數:(1)string cmdText -- Store Procedure指令文本
傳回:IDataReader -- DataReader對象
SpExecuteReader
聲明:IDataReader SpExecuteReader(string cmdText, params IDataParameter[] cmdParameters)
用途:執行Store Procedure指令文本,傳回DataReader對象
參數:(1)string cmdText -- Store Procedure指令文本
(2)params IDataParameter[] cmdParameters --指令參數數組
傳回:IDataReader -- DataReader對象
SqlExecuteScalar
聲明:object SqlExecuteScalar(string cmdText)
用途:執行Sql指令文本,傳回sum、avg、max等聚合函數計算出的值
參數:(1)string cmdText -- Sql指令文本
傳回:object --聚合函數計算出的值
SqlExecuteScalar
聲明:object SqlExecuteScalar(string cmdText, params IDataParameter[] cmdParameters)
用途:執行Sql指令文本,傳回sum、avg、max等聚合函數計算出的值
參數:(1)string cmdText -- Sql指令文本
(2)params IDataParameter[] cmdParameters --指令參數數組
傳回:object --聚合函數計算出的值
SpExecuteScalar
聲明:object SpExecuteScalar(string cmdText)
用途:執行Store Procedure指令文本,傳回sum、avg、max等聚合函數計算出的值
參數:(1)string cmdText -- Store Procedure指令文本
傳回:object --聚合函數計算出的值
SpExecuteScalar
聲明:object SpExecuteScalar(string cmdText, params IDataParameter[] cmdParameters)
用途:執行Store Procedure指令文本,傳回sum、avg、max等聚合函數計算出的值
參數:(1)string cmdText -- Store Procedure指令文本
(2)params IDataParameter[] cmdParameters --指令參數數組
傳回:object --聚合函數計算出的值
SqlExecuteDataset
聲明:void SqlExecuteDataset(string cmdText, DataSet ds)
用途:執行Sql指令文本,擷取相應的DataSet資料集
參數:(1)string cmdText -- Sql指令文本
(2)DataSet ds --資料集對象
傳回:(無)
SqlExecuteDataset
聲明:void SqlExecuteDataset(string cmdText, DataSet ds, string tableName)
用途:執行Sql指令文本,擷取相應的DataSet資料集
參數:(1)string cmdText -- Sql指令文本
(2)DataSet ds --資料集對象
(3)string tableName --資料集中的資料表名
傳回:(無)
SqlExecuteDataset
聲明:void SqlExecuteDataset(string cmdText, DataSet ds, params IDataParameter[] cmdParameters)
用途:執行Sql指令文本,擷取相應的DataSet資料集
參數:(1)string cmdText -- Sql指令文本
(2)DataSet ds --資料集對象
(3)params IDataParameter[] cmdParameters --指令參數數組
傳回:(無)
SqlExecuteDataset
聲明:void SqlExecuteDataset(string cmdText, DataSet ds, string tableName, params IDataParameter[] cmdParameters)
用途:執行Sql指令文本,擷取相應的DataSet資料集
參數:(1)string cmdText -- Sql指令文本
(2)DataSet ds --資料集對象
(3)string tableName --資料集中的資料表名
(4)params IDataParameter[] cmdParameters --指令參數數組
傳回:(無)
SpExecuteDataset
聲明:void SpExecuteDataset(string cmdText, DataSet ds)
用途:執行Store Procedure指令文本,擷取相應的DataSet資料集
參數:(1)string cmdText -- Store Procedure指令文本
(2)DataSet ds --資料集對象
傳回:(無)
SpExecuteDataset
聲明:void SpExecuteDataset(string cmdText, DataSet ds, string tableName)
用途:執行Store Procedure指令文本,擷取相應的DataSet資料集
參數:(1)string cmdText -- Store Procedure指令文本
(2)DataSet ds --資料集對象
(3)string tableName --資料集中的資料表名
傳回:(無)
SpExecuteDataset
聲明:void SpExecuteDataset(string cmdText, DataSet ds, params IDataParameter[] cmdParameters)
用途:執行Store Procedure指令文本,擷取相應的DataSet資料集
參數:(1)string cmdText -- Store Procedure指令文本
(2)DataSet ds --資料集對象
(3)params IDataParameter[] cmdParameters --指令參數數組
傳回:(無)
SpExecuteDataset
聲明:void SpExecuteDataset(string cmdText, DataSet ds, string tableName, params IDataParameter[] cmdParameters)
用途:執行Store Procedure指令文本,擷取相應的DataSet資料集
參數:(1)string cmdText -- Store Procedure指令文本
(2)DataSet ds --資料集對象
(3)string tableName --資料集中的資料表名
(4)params IDataParameter[] cmdParameters --指令參數數組
傳回:(無)
【附注】:文章開頭給出的下載下傳示例,均已成功運作通過。但下載下傳示例往往隻包含“核心模闆”内容。有些輔助内容需要自己建立/設定(比如:資料庫建立、連結字元串設定、檔案配置、路徑設定、參數設定、等等...)。
請在了解文章内容的基礎上,再做示例實驗。若遇異常報錯,請仔細閱讀+了解本文。
也随時歡迎聯系作者,微信掃描文末二維碼,擷取更多技術支援!
推薦閱讀
- .NET中大型項目開發必備(1)–UUID全球通用唯一識别碼
- .NET中大型項目開發必備(2)–CORS跨域通路
- .NET中大型項目開發必備(3)–資料庫的負載均衡
- .NET中大型項目開發必備(4)–資料庫的讀寫分離
- .NET中大型項目開發必備(5)–Web服務/WebApi的負載均衡
- .NET中大型項目開發必備(6)–IUtility工具介紹
- .NET中大型項目開發必備(7)–ORM資料庫通路技術
- .NET中大型項目開發必備(8)–高效分頁
- .NET中大型項目開發必備(9)--http請求調用(Post與Get)
- .NET中大型項目開發必備(10)--圖檔的裁剪、縮放、與加水印
- .NET中大型項目開發必備(11)--使用Redis緩存
- .NET中大型項目開發必備(12)--使用MQ消息隊列
如果文章對你有幫助,請點贊、收藏、關注(原創内容,歡迎轉載,轉載請注明出處) 有疑問想擷取專業技術支援?請掃描左側微信二維碼聯系作者 出處:https://www.cnblogs.com/DeveloperSharp/ 本文采用「CC BY 4.0」知識共享協定進行許可,轉載請注明作者及出處。 |