最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

.Net執(zhí)行SQL存儲過程之易用輕量工具詳解

 更新時間:2022年12月20日 14:56:37   作者:王者天涯  
這篇文章主要為大家介紹了.Net執(zhí)行SQL存儲過程之易用輕量工具詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪

正文

由于該工具近來被廣東省數(shù)個公司2B項目采用,且表現(xiàn)穩(wěn)定,得到良好驗證,故在此推薦出來。

此工具在IDataAccess接口中提供。 

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

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

(1)     執(zhí)行Sql語句

(2)     執(zhí)行Sp存儲過程

(3)     創(chuàng)建參數(shù)(輸入/輸出/返回)

(4)     事務

它初始化的代碼如下:

using DeveloperSharp.Framework.QueryEngine;
--------------------------
   DatabaseInfo DIF;
   DIF.DatabaseType = DatabaseType.SQLServer; //設置數(shù)據(jù)庫類型
   DIF.ConnectionString = "Server=localhost;Database=YZZ;Uid=sa;Pwd=123";
   IDataAccess IDA = DataAccessFactory.Create(DIF);

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

【示例1:查詢】

下面,首先直接給出一個“查詢多數(shù)據(jù)+選出單數(shù)據(jù)+參數(shù)”的使用示例,代碼如下:

//查詢多數(shù)據(jù)
   var Students1 = IDA.SqlExecute<stu>("select * from t_Student");
   //查詢多數(shù)據(jù)(帶參數(shù))
   var Students2 = IDA.SqlExecute<stu>("select * from t_Student where Id>@IdMin and Name like @LikeName", new { IdMin = 2, LikeName = "%周%" });
   //另一種寫法1
   var IdMin = IDA.CreateParameterInput("IdMin", DbType.Int32, 2);
   var LikeName = IDA.CreateParameterInput("LikeName", DbType.String, 50, "%周%");
   var Students3 = IDA.SqlExecute<stu>("select * from t_Student where Id>@IdMin and Name like @LikeName", LikeName, IdMin);
   //另一種寫法2
   var Students4 = IDA.SqlExecute<stu>("select * from t_Student").Where(t => t.Id > 2 && t.Name.Contains("周"));
   //選出單數(shù)據(jù)
   var OneStudent = Students2.FirstOrDefault();

其中stu實體類代碼如下形式:

public class stu
{
        public int Id { get; set; }
        public string Name { get; set; }
        public int Age { get; set; }
}
//此實體類中的Id、Name、Age屬性名,要與數(shù)據(jù)表中的Id、Name、Age字段名對應

注意:(1)DbType類型的命名空間是System.Data

           (2)若沒有定義stu實體類,也可以用dynamic替代

【示例2:分頁】

承接上面“示例1”的代碼,若我們要對Students1、Students2進行分頁操作(比如:每頁20條,取出第5頁),相關代碼如下:

using DeveloperSharp.Extension;//調(diào)用“分頁功能”需要引用此命名空間
--------------------------
   var Page1 = Students1.PagePartition(20, 5);
   var Page2 = Students2.PagePartition(20, 5);
   //一氣呵成的寫法
   var Page3 = IDA.SqlExecute&lt;stu&gt;("select * from t_Student").PagePartition(20, 5);

分頁后獲得的PagePiece對象中所包含的各類屬性/參數(shù),可參看這篇文章:高效分頁

【示例3:增/刪/改】

前面談完“查詢”,我們接下來談談“增/刪/改”的使用方式,下面是一個“修改數(shù)據(jù)+參數(shù)+事務”的使用示例:

try
   {
       //開啟事務
       IDA.TransactionBegin();
       //修改數(shù)據(jù)(多語句)
       int affectedRows1 = IDA.SqlExecute("insert into t_Student(Name,Age)values('ww','96');update t_Student set Age=100 where Id=1006");
       //修改數(shù)據(jù)(帶參數(shù))
       int affectedRows2 = IDA.SqlExecute("insert into t_Student(Name,Age)values(@N,@A)", new { N = "孫悟空", A = 200 });
       //另一種寫法
       var NewAge = IDA.CreateParameterInput("NewAge", DbType.Int32, 200);
       var NewName = IDA.CreateParameterInput("NewName", DbType.String, 50, "孫悟空");
       int affectedRows3 = IDA.SqlExecute("insert into t_Student(Name,Age)values(@NewName,@NewAge)", NewName, NewAge);
       //完成事務
       IDA.TransactionCommit();
   }
   catch
   {
       //回滾事務
       IDA.TransactionRollBack();
   }

【示例4:輸出參數(shù)】

前面幾個示例都只用到了“輸入?yún)?shù)”,下面我們看看“輸出參數(shù)”怎么使用,示例代碼如下:

var op1 = IDA.CreateParameterOutput("TotalCount", DbType.Int32);//此項為輸出參數(shù)
   var op2 = IDA.CreateParameterOutput("MyName", DbType.String, 50);//此項為輸出參數(shù)
   //以下sql語句混雜了多個“輸入”與“輸出”參數(shù),注意看
   IDA.SqlExecute("insert into Friend(Birth,Name,height)values(@B,@N,@h);" +
       "select @TotalCount=count(*) from Friend;" +
       "select @MyName=Name from Friend where Id=@Id",
       new { N = "楊小偉", B = "1999-02-28 12:03:45", h = 11.023, Id = 2 },
       op1, op2);
   int tc = Convert.ToInt32(op1.Value);
   string mn = op2.Value.ToString();

【示例5:存儲過程】

最后,我們來談談如何調(diào)用存儲過程。我們創(chuàng)建一個存儲過程,它帶有輸入、輸出、返回三種類型的參數(shù),代碼如下:

CREATE PROCEDURE Test5
    @B as datetime,
    @N as nvarchar(50),
    @h as float,
    @TotalCount as int output,
    @MyName as nvarchar(50) output,
    @Id as int
AS
BEGIN
    insert into Friend(Birth,Name,height)values(@B,@N,@h);
    select @TotalCount=count(*) from Friend;
    select @MyName=Name from Friend where Id=@Id;
    return @TotalCount+100;
END

調(diào)用該存儲過程的示例代碼如下:

var op1 = IDA.CreateParameterOutput("TotalCount", DbType.Int32);//輸出參數(shù)
   var op2 = IDA.CreateParameterOutput("MyName", DbType.String, 50);//輸出參數(shù)
   var op3 = IDA.CreateParameterReturn();//返回參數(shù)
   IDA.SpExecute("Test5", new { N = "楊小偉", B = "1999-02-28 12:03:45", h = 11.023, Id = 2 }, op1, op2, op3);
   int tc = Convert.ToInt32(op1.Value);
   string mn = op2.Value.ToString();
   int ret = Convert.ToInt32(op3.Value);

學習+靈活使用以上5個示例,就能滿足幾乎所有的數(shù)據(jù)操作需求,且操作十分簡易。

IDataAccess內(nèi)功能方法詳細說明(輔助參考):

SqlExecute<T>
聲明:IEnumerable<T> SqlExecute<T>(string cmdText, params IDataParameter[] Params) where T : class, new()
用途:執(zhí)行Sql語句(Select類)
參數(shù):(1)string  cmdText              --  Sql語句
     (2)params IDataParameter[] Params --  參數(shù)組
返回:IEnumerable<T> --  多數(shù)據(jù)結(jié)果集
SqlExecute<T>
聲明:IEnumerable<T> SqlExecute<T>(string cmdText, object InputParams, params IDataParameter[] Params) where T : class, new()
用途:執(zhí)行Sql語句(Select類)
參數(shù):(1)string  cmdText              --  Sql語句
     (2)object InputParams            --  輸入?yún)?shù)對象
     (3)params IDataParameter[] Params --  參數(shù)組
返回:IEnumerable<T> --  多數(shù)據(jù)結(jié)果集
SqlExecute
聲明:int SqlExecute(string cmdText, params IDataParameter[] Params)
用途:執(zhí)行Sql語句(Insert/Update/Delete類)
參數(shù):(1)string  cmdText              --  Sql語句
     (2)params IDataParameter[] Params --  參數(shù)組
返回:int --  受影響的行數(shù)
SqlExecute
聲明:int SqlExecute(string cmdText, object InputParams, params IDataParameter[] Params)
用途:執(zhí)行Sql語句(Insert/Update/Delete類)
參數(shù):(1)string  cmdText              --  Sql語句
     (2)object InputParams            --  輸入?yún)?shù)對象
     (3)params IDataParameter[] Params --  參數(shù)組
返回:int --  受影響的行數(shù)
SpExecute<T>
聲明:IEnumerable<T> SpExecute<T>(string cmdText, params IDataParameter[] Params) where T : class, new()
用途:執(zhí)行Sp存儲過程(Select類)
參數(shù):(1)string  cmdText              --  Sp存儲過程名
     (2)params IDataParameter[] Params --  參數(shù)組
返回:IEnumerable<T> --  多數(shù)據(jù)結(jié)果集
SpExecute<T>
聲明:IEnumerable<T> SpExecute<T>(string cmdText, object InputParams, params IDataParameter[] Params) where T : class, new()
用途:執(zhí)行Sp存儲過程(Select類)
參數(shù):(1)string  cmdText              --  Sp存儲過程名
     (2)object InputParams            --  輸入?yún)?shù)對象
     (3)params IDataParameter[] Params --  參數(shù)組
返回:IEnumerable<T> --  多數(shù)據(jù)結(jié)果集
SpExecute
聲明:int SpExecute(string cmdText, params IDataParameter[] Params)
用途:執(zhí)行Sp存儲過程(Insert/Update/Delete類)
參數(shù):(1)string  cmdText              --  Sp存儲過程名
     (2)params IDataParameter[] Params --  參數(shù)組
返回:int --  受影響的行數(shù)
SpExecute
聲明:int SpExecute(string cmdText, object InputParams, params IDataParameter[] Params)
用途:執(zhí)行Sp存儲過程(Insert/Update/Delete類)
參數(shù):(1)string  cmdText              --  Sp存儲過程名
     (2)object InputParams            --  輸入?yún)?shù)對象
     (3)params IDataParameter[] Params --  參數(shù)組
返回:int --  受影響的行數(shù)

以上就是.Net執(zhí)行SQL存儲過程之易用輕量工具詳解的詳細內(nèi)容,更多關于.Net執(zhí)行SQL存儲過程工具的資料請關注腳本之家其它相關文章!

相關文章

  • .NET 6新特性試用Timer類之PeriodicTimer?

    .NET 6新特性試用Timer類之PeriodicTimer?

    這篇文章主要介紹了.NET 6新特性試用Timer類之PeriodicTimer,PeriodicTimer與其他Timer需要創(chuàng)建事件回調(diào)不同,下,下面文章詳細介紹PeriodicTimer的使用方式,需要的朋友可以參考一下
    2022-02-02
  • Oracle中TO_DATE格式介紹

    Oracle中TO_DATE格式介紹

    Oracle中TO_DATE格式介紹;可供需求的朋友參考
    2012-11-11
  • 一個經(jīng)典的ADO.NET入門例子

    一個經(jīng)典的ADO.NET入門例子

    一個經(jīng)典的ADO.NET入門例子...
    2006-07-07
  • .NET?Core?中對象池?Object?Pool的使用

    .NET?Core?中對象池?Object?Pool的使用

    這篇文章主要介紹了?.NET?Core?中對象池?Object?Pool的使用,對象池簡單來說就是一種為對象提供可復用能力的軟件設計思路,對象池最常用的場景是游戲設計,因為在游戲中大量存在著可復用的對象,源源不斷的子彈出現(xiàn)并不是循環(huán)再生的,下面一起進入文章了解具體內(nèi)容吧
    2021-11-11
  • upload上傳單張圖片

    upload上傳單張圖片

    這篇文章主要介紹了upload上傳單張圖片的代碼,需要的朋友可以參考下。
    2015-07-07
  • ASP.NET Core MVC 過濾器(Filter)

    ASP.NET Core MVC 過濾器(Filter)

    本文小編要給大家介紹的是ASP.NET Core MVC 過濾器,ASP.NET MVC 中的過濾器允許在執(zhí)行管道中的特定階段之前或之后運行代碼。可以對全局,也可以對每個控制器或每個操作配置過濾器,需要的朋友可以參考下面文章的具體內(nèi)容
    2021-09-09
  • ASP.NET Core Web API 教程Project Configuration

    ASP.NET Core Web API 教程Project Configuration

    本文將介紹 Startup 類中的配置方法以及如何通過這些方法來設置應用程序。除此之外,還將介紹如何注冊服務以及如何通過擴展方法來實現(xiàn)注冊,需要的朋友可以參考下面文章內(nèi)容
    2021-09-09
  • .NET 6中使用DateOnly和TimeOnly類型

    .NET 6中使用DateOnly和TimeOnly類型

    這篇文章主要介紹了.NET 6中使用DateOnly和TimeOnly類型,在.NET 6(preview 4)中引入了兩個期待已久的類型,將作為核心庫的一部分。DateOnly和TimeOnly允許開發(fā)人員表示DateTime的日期或時間部分,下文具體內(nèi)容,需要的小伙伴可以參考一下
    2022-01-01
  • ASP.NET Web API教程 創(chuàng)建Admin視圖詳細介紹

    ASP.NET Web API教程 創(chuàng)建Admin視圖詳細介紹

    現(xiàn)在我們轉(zhuǎn)入客戶端,并添加一個能夠使用從Admin控制器而來的數(shù)據(jù)的頁面。通過給控制器發(fā)送AJAX請求的方式,該頁面將允許用戶創(chuàng)建、編輯,或刪除產(chǎn)品
    2012-11-11
  • .NET新能源汽車鋰電池檢測程序UI掛死問題分析

    .NET新能源汽車鋰電池檢測程序UI掛死問題分析

    這篇文章主要為大家介紹了.NET新能源汽車鋰電池檢測程序UI掛死問題分析?,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-11-11

最新評論

华亭县| 南漳县| 建湖县| 曲靖市| 海兴县| 探索| 尼勒克县| 济南市| 洱源县| 五指山市| 饶平县| 黎川县| 富宁县| 尼玛县| 临湘市| 来安县| 曲周县| 拉孜县| 崇阳县| 彰武县| 临夏市| 巴楚县| 西城区| 普安县| 麟游县| 天等县| 浏阳市| 吉林市| 榕江县| 台北市| 徐州市| 攀枝花市| 高淳县| 新兴县| 嘉善县| 辛集市| 彝良县| 锡林郭勒盟| 宣恩县| 洛南县| 石景山区|