.NET中大型項目開發必備(7)--DataAccess數據庫訪問技術


前言:本系列文章適合有初/中級.NET知識的同學閱讀(請在電腦上打開頁面,獲取更好的閱讀效果)。
(1)本系列文章,旨在講述研發一個中大型項目所需要了解的一系列“基本構件”,並提供這些“基本構件”在全網的【最簡單】、【最快速】使用方法!!(並不深究技術原理)
(2)通過閱讀本系列文章,能讓你在正規“項目研發”方面快速入門+進階,並能達成“小團隊構建大網站”的目的。
(3)本系列文章采用的技術,已成功應用到人工智能、產業互聯網、社區電商、游戲、金融風控、智慧醫療、等項目上。

 

支持.Net/.Net Core/.Net Framework,可以部署在Docker, Windows, Linux, Mac。

使用Sql語句操作數據庫,是應用程序的基礎必備知識。

本文要介紹的主角DeveloperSharp框架中的DataAccess數據庫訪問技術,提供了一種在.Net下使用Sql【快速+高效】操作各類數據庫的工具,在IDataAccess接口中被實現(它比ADO.NET要簡化、易用很多) 

 

IDataAccess所在的命名空間是:DeveloperSharp.Framework.QueryEngine(需從NuGet引用DeveloperSharp包)

它主要提供了如下四大功能:

(1)     執行Sql語句

(2)     執行Sp存儲過程

(3)     創建參數(輸入/輸出/返回)

(4)     事務

它初始化的代碼如下:

若是在.Net Core環境下,代碼如下:

using DeveloperSharp.Framework.QueryEngine;
--------------------------

   //在Startup.cs或Program.cs文件中進行
   Services.AddTransient<IDataAccess>((t) => {
       DatabaseInfo DIF;
       DIF.DatabaseType = DatabaseType.SQLServer; //設置數據庫類型
       DIF.ConnectionString = "Server=localhost;Database=YZZ;Uid=sa;Pwd=123";
       return DataAccessFactory.Create(DIF);
   });

若是在.Net Framework環境下,代碼如下:

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、等)之間透明切換!(某些第三方工具在創建參數時不需要指定具體類型,雖然是簡化了,但某些情況下是會出錯的)

 

優勢:通過對DatabaseType屬性的設定,提供了對所有種類數據庫的支持(包括:MySql、Oracle、PostgreSQL、SqlServer、Sqlite、Firebird、達夢、以及人大金倉KingbaseES、神舟通用, 南大通用, 翰高, Access、等)

 

IDataAccess內擁有的詳細功能方法說明如下:

DatabaseType
聲明:DatabaseType DatabaseType{get;}
用途:獲取數據庫類型
返回:DatabaseType     --  數據庫類型枚舉

ConnectionString
聲明:string ConnectionString{get;}
用途:獲取數據庫鏈接字符串
返回:string    --  數據庫鏈接字符串

CreateParameterInput
聲明:IDataParameter CreateParameterInput(string name, DbType type, int size, object val)
用途:創建輸入參數
參數:(1string name      --  參數名
     (2)DbType type   --  參數類型
     (3int size        -- 參數大小
     (4object val        --參數值
返回:IDataParameter     --  輸入參數

CreateParameterInput
聲明:IDataParameter CreateParameterInput(string name, DbType type, object val)
用途:創建輸入參數
參數:(1string name      --  參數名
     (2)DbType type   --  參數類型
     (3object val        --參數值
返回:IDataParameter     --  輸入參數

CreateParameterOutput
聲明:IDataParameter CreateParameterOutput(string name, DbType type, int size)
用途:創建輸出參數
參數:(1string name    --參數名
     (2)DbType type    --參數類型
     (3int size    --參數大小
返回:IDataParameter    --  輸出參數

CreateParameterOutput
聲明:IDataParameter CreateParameterOutput(string name, DbType type)
用途:創建輸出參數
參數:(1string name    --參數名
     (2)DbType type    --參數類型
返回:IDataParameter    --  輸出參數

CreateParameterReturn()
聲明:IDataParameter CreateParameterReturn()
用途:創建返回參數
參數:(無)
返回:IDataParameter    --  返回參數

TransactionBegin
聲明:void TransactionBegin()
用途:開啟事務
參數:(無)
返回:(無)

TransactionCommit
聲明:void TransactionCommit()
用途:完成事務
參數:(無)
返回:(無)

TransactionRollBack
聲明:void TransactionRollBack
用途:回滾事務
參數:(無)
返回:(無)

SqlExecuteNonQuery(Async)
聲明:int SqlExecuteNonQuery(string cmdText)
用途:執行Sql命令文本,返回受影響的行數
參數:(1string  cmdText     -- Sql命令文本
返回:int    --受影響的行數

SqlExecuteNonQuery(Async)
聲明:int SqlExecuteNonQuery(string cmdText , params IDataParameter[] cmdParameters)
用途:執行Sql命令文本,返回受影響的行數
參數:(1string  cmdText     -- Sql命令文本
     (2params IDataParameter[] cmdParameters    --命令參數數組
返回:int    --受影響的行數

SpExecuteNonQuery(Async)
聲明:int SpExecuteNonQuery(string cmdText)
用途:執行Store Procedure命令文本,返回受影響的行數
參數:(1string  cmdText    --Store Procedure命令文本
返回:int    --受影響的行數

SpExecuteNonQuery(Async)
聲明:int SpExecuteNonQuery(string cmdText, params IDataParameter[] cmdParameters)
用途:執行Store Procedure命令文本,返回受影響的行數
參數:(1string cmdText    -- Store Procedure命令文本
     (2params IDataParameter[] cmdParameters    --命令參數數組
返回:int        --受影響的行數

SqlExecuteReader(Async)
聲明:IDataReader SqlExecuteReader(string cmdText)
用途:執行Sql命令文本,返回DataReader對象
參數:(1string  cmdText    -- Sql命令文本
返回:IDataReader    -- DataReader對象

SqlExecuteReader(Async)
聲明:IDataReader SqlExecuteReader (string cmdText, params IDataParameter[] cmdParameters)
用途:執行Sql命令文本,返回DataReader對象
參數:(1string  cmdText    -- Sql命令文本
     (2params IDataParameter[] cmdParameters    --命令參數數組
返回:IDataReader    -- DataReader對象

SpExecuteReader(Async)
聲明:IDataReader SpExecuteReader(string cmdText)
用途:執行Store Procedure命令文本,返回DataReader對象
參數:(1string  cmdText    -- Store Procedure命令文本
返回:IDataReader    -- DataReader對象

SpExecuteReader(Async)
聲明:IDataReader SpExecuteReader(string cmdText, params IDataParameter[] cmdParameters)
用途:執行Store Procedure命令文本,返回DataReader對象
參數:(1string  cmdText    -- Store Procedure命令文本
     (2params IDataParameter[] cmdParameters    --命令參數數組
返回:IDataReader    -- DataReader對象

SqlExecuteScalar(Async)
聲明:object SqlExecuteScalar(string cmdText)
用途:執行Sql命令文本,返回sum、avg、max等聚合函數計算出的值
參數:(1string  cmdText    -- Sql命令文本
返回:object    --聚合函數計算出的值

SqlExecuteScalar(Async)
聲明:object SqlExecuteScalar(string cmdText, params IDataParameter[] cmdParameters)
用途:執行Sql命令文本,返回sum、avg、max等聚合函數計算出的值
參數:(1string  cmdText    -- Sql命令文本
     (2params IDataParameter[]  cmdParameters    --命令參數數組
返回:object    --聚合函數計算出的值

SpExecuteScalar(Async)
聲明:object SpExecuteScalar(string cmdText)
用途:執行Store Procedure命令文本,返回sum、avg、max等聚合函數計算出的值
參數:(1string  cmdText    -- Store Procedure命令文本
返回:object    --聚合函數計算出的值

SpExecuteScalar(Async)
聲明:object SpExecuteScalar(string cmdText, params IDataParameter[] cmdParameters)
用途:執行Store Procedure命令文本,返回sum、avg、max等聚合函數計算出的值
參數:(1string  cmdText    -- Store Procedure命令文本
     (2params IDataParameter[] cmdParameters    --命令參數數組
返回:object    --聚合函數計算出的值

SqlExecuteDataset(Async)
聲明:void SqlExecuteDataset(string cmdText, DataSet ds)
用途:執行Sql命令文本,獲取相應的DataSet數據集
參數:(1string  cmdText    -- Sql命令文本
     (2)DataSet ds    --數據集對象
返回:(無)

SqlExecuteDataset(Async)
聲明:void  SqlExecuteDataset(string cmdText, DataSet ds, string tableName)
用途:執行Sql命令文本,獲取相應的DataSet數據集
參數:(1string  cmdText    -- Sql命令文本
     (2)DataSet ds    --數據集對象
     (3string tableName    --數據集中的數據表名
返回:(無)

SqlExecuteDataset(Async)
聲明:void SqlExecuteDataset(string cmdText, DataSet ds, params IDataParameter[] cmdParameters)
用途:執行Sql命令文本,獲取相應的DataSet數據集
參數:(1string  cmdText    -- Sql命令文本
     (2)DataSet ds    --數據集對象
     (3params IDataParameter[] cmdParameters    --命令參數數組
返回:(無)

SqlExecuteDataset(Async)
聲明:void SqlExecuteDataset(string cmdText, DataSet ds, string tableName, params IDataParameter[] cmdParameters)
用途:執行Sql命令文本,獲取相應的DataSet數據集
參數:(1string  cmdText    -- Sql命令文本
     (2)DataSet ds    --數據集對象
     (3string tableName    --數據集中的數據表名
     (4params IDataParameter[] cmdParameters    --命令參數數組
返回:(無)

SpExecuteDataset(Async)
聲明:void SpExecuteDataset(string cmdText, DataSet ds)
用途:執行Store Procedure命令文本,獲取相應的DataSet數據集
參數:(1string  cmdText    -- Store Procedure命令文本
     (2)DataSet ds    --數據集對象
返回:(無)

SpExecuteDataset(Async)
聲明:void SpExecuteDataset(string cmdText, DataSet ds, string tableName)
用途:執行Store Procedure命令文本,獲取相應的DataSet數據集
參數:(1string  cmdText    -- Store Procedure命令文本
     (2)DataSet ds    --數據集對象
     (3string tableName    --數據集中的數據表名
返回:(無)

SpExecuteDataset(Async)
聲明:void SpExecuteDataset(string cmdText, DataSet ds, params IDataParameter[] cmdParameters)
用途:執行Store Procedure命令文本,獲取相應的DataSet數據集
參數:(1string  cmdText    -- Store Procedure命令文本
     (2)DataSet ds    --數據集對象
     (3params IDataParameter[] cmdParameters    --命令參數數組
返回:(無)

SpExecuteDataset(Async)
聲明:void SpExecuteDataset(string cmdText, DataSet ds, string tableName, params IDataParameter[] cmdParameters)
用途:執行Store Procedure命令文本,獲取相應的DataSet數據集
參數:(1string  cmdText    -- Store Procedure命令文本
     (2)DataSet ds    --數據集對象
     (3string tableName    --數據集中的數據表名
     (4params IDataParameter[] cmdParameters    --命令參數數組
返回:(無)

 

【附注】:下載示例均已成功運行通過。但有些輔助設置需要自己調整。技術支持+獲取更多寶貴資源:請微信掃描文末二維碼,備注“進群”!

 

推薦閱讀


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM