相關下載:
DeveloperSharp.dll組件
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)–高效分頁
![]() | 如果文章對你有幫助,請點贊、收藏、關注(原創內容,歡迎轉載,轉載請注明出處) 有疑問想獲取專業技術支持?請掃描左側微信二維碼聯系作者 出處:https://www.cnblogs.com/DeveloperSharp/ 本文采用「CC BY 4.0」知識共享協議進行許可,轉載請注明作者及出處, |
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/415893.html
標籤:.NET技术

