成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久

您的位置:首頁技術文章
文章詳情頁

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

瀏覽:199日期:2022-06-09 09:01:15
目錄
  • 正文
  • 【示例1:查詢】
  • 【示例2:分頁】
  • 【示例3:增/刪/改】
  • 【示例4:輸出參數】
  • 【示例5:存儲過程】

正文

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

此工具在IDataAccess接口中提供。 

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

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

(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);

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

【示例1:查詢】

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

//查詢多數據
   var Students1 = IDA.SqlExecute<stu>("select * from t_Student");
   //查詢多數據(帶參數)
   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("周"));
   //選出單數據
   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屬性名,要與數據表中的Id、Name、Age字段名對應

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

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

【示例2:分頁】

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

using DeveloperSharp.Extension;//調用“分頁功能”需要引用此命名空間
--------------------------
   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對象中所包含的各類屬性/參數,可參看這篇文章:高效分頁

【示例3:增/刪/改】

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

try
   {
       //開啟事務
       IDA.TransactionBegin();
       //修改數據(多語句)
       int affectedRows1 = IDA.SqlExecute("insert into t_Student(Name,Age)values("ww","96");update t_Student set Age=100 where Id=1006");
       //修改數據(帶參數)
       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:輸出參數】

前面幾個示例都只用到了“輸入參數”,下面我們看看“輸出參數”怎么使用,示例代碼如下:

var op1 = IDA.CreateParameterOutput("TotalCount", DbType.Int32);//此項為輸出參數
   var op2 = IDA.CreateParameterOutput("MyName", DbType.String, 50);//此項為輸出參數
   //以下sql語句混雜了多個“輸入”與“輸出”參數,注意看
   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:存儲過程】

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

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

調用該存儲過程的示例代碼如下:

var op1 = IDA.CreateParameterOutput("TotalCount", DbType.Int32);//輸出參數
   var op2 = IDA.CreateParameterOutput("MyName", DbType.String, 50);//輸出參數
   var op3 = IDA.CreateParameterReturn();//返回參數
   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個示例,就能滿足幾乎所有的數據操作需求,且操作十分簡易。

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

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

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

標簽: ASP.NET
成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久
亚洲国产精品久久人人爱蜜臀 | www国产成人| 在线亚洲免费视频| 久久中文欧美| 老色鬼久久亚洲一区二区| 亚洲免费网站| 在线亚洲观看| 久草在线在线精品观看| 午夜成人免费视频| 日日摸夜夜添夜夜添亚洲女人| 亚洲午夜一二三区视频| 你懂的国产精品永久在线| www.欧美.com| 亚洲一二三区不卡| 老司机午夜精品99久久| 国产在线播放一区| av午夜精品一区二区三区| 91在线视频观看| 欧美日韩hd| 91电影在线观看| 欧美中文字幕久久| 日韩一区二区三区视频在线观看| 日韩欧美你懂的| 久久九九99视频| 亚洲欧美日韩中文字幕一区二区三区| 亚洲精品视频一区二区| 日本在线观看不卡视频| 国产一区视频导航| 91蜜桃网址入口| 夜夜嗨一区二区三区| 久久亚洲精品欧美| 制服丝袜日韩国产| 国产精品美女一区二区| 亚洲成人av一区二区| 狠狠色丁香久久婷婷综合丁香| 成人网男人的天堂| 亚洲欧洲精品一区| 欧美日韩不卡一区二区| 欧美国产精品一区二区三区| 亚洲一区av在线| 国产精品自拍网站| 亚洲大片av| 5858s免费视频成人| 国产精品亲子伦对白| 日精品一区二区三区| 成人黄色免费短视频| 在线一区日本视频| 日韩三级视频中文字幕| 一级做a爱片久久| 中文字幕在线观看不卡| 欧美tickle裸体挠脚心vk| 亚洲欧美另类久久久精品| 秋霞影院一区二区| 国内不卡一区二区三区| 成人午夜激情在线| 国产在线精品一区二区夜色| 国内精品久久久久久久97牛牛 | 久久综合五月天婷婷伊人| 亚洲午夜久久久久久久久电影院 | 欧美亚洲国产bt| 国产精品乱子久久久久| 国产自产v一区二区三区c| 国产精品久久久久久久久免费樱桃 | 欧美日韩亚洲综合一区| 亚洲另类中文字| av激情综合网| 国产成人在线免费观看| 蜜桃视频第一区免费观看| 欧美日韩精品久久| 欧美一级黄色录像| 丝袜美腿亚洲色图| 黑丝一区二区三区| 欧美成人综合网站| 欧美精品成人一区二区在线观看| 老司机精品视频网站| 中文字幕日韩欧美一区二区三区| 国产麻豆精品久久一二三| 欧美精品aa| 精品第一国产综合精品aⅴ| 美女一区二区久久| 久久国产精品一区二区三区四区 | 26uuu国产一区二区三区| 激情五月激情综合网| 久久黄色小说| 亚洲自拍偷拍av| 亚洲第一网站| 国产精品美女久久久久久久久久久| 国产一区二区不卡在线 | 一区视频在线播放| 欧美日韩免费| 久久久五月婷婷| 成人黄色av网站在线| 91精品国产一区二区三区 | 色婷婷精品久久二区二区蜜臂av | 免费看黄色91| 欧美专区在线观看一区| 日韩精品国产欧美| 久久久久se| 亚洲国产日韩av| 久久岛国电影| 午夜视频一区在线观看| 国产精品试看| 亚洲成av人在线观看| 国产精品亚洲综合久久| 亚洲一区二区不卡免费| 国产精品久久久久久久久久直播 | 精品电影一区二区三区 | 欧美精品黄色| 男人的天堂亚洲在线| 亚洲最大色网站| 久久伊人一区二区| 91丨porny丨户外露出| 精品国产一区二区三区不卡| 国产美女娇喘av呻吟久久| 亚洲视频一二区| 欧美日韩国产三级| 7777女厕盗摄久久久| 风流少妇一区二区| 欧美精品一区二区精品网| 欧美精品二区| 一区二区三区不卡视频在线观看| 国产嫩草一区二区三区在线观看| 爽爽淫人综合网网站| 欧美日韩亚洲综合在线 欧美亚洲特黄一级 | 亚洲精品久久久久久一区二区| 亚洲免费在线看| 欧美一区二区黄色| 欧美在线二区| 亚洲一区二区三区在线看| 久久综合久久久| 奇米一区二区三区av| 日韩欧美色综合网站| 日韩欧美中文字幕一区| 亚洲一区欧美激情| 丁香一区二区三区| 亚洲国产日韩a在线播放| 欧美精品一区二区三区高清aⅴ| 国产欧美久久久精品影院| 日韩精品成人一区二区三区| 北条麻妃国产九九精品视频| 久久久久国产精品厨房| 一区二区三区国产盗摄| 亚洲激情在线| 欧美区一区二区三区| 欧美精品aⅴ在线视频| 亚洲综合久久久久| 欧美日韩午夜在线| 欧美日韩综合精品| 免费在线观看视频一区| 国产亚洲1区2区3区| 欧美在线综合| 欧美一区二区三区在线播放| 亚洲综合图片区| 日韩欧美国产wwwww| 性8sex亚洲区入口| 不卡高清视频专区| 亚洲第一福利一区| 久久久久久久久久久久久女国产乱| 国产精品夜夜夜一区二区三区尤| 国产69精品久久777的优势| 亚洲欧洲一区二区三区| 欧美精品久久一区二区三区| 国内精品久久久久久久果冻传媒 | 欧美日韩国产另类一区| 亚洲欧洲日本国产| 成人91在线观看| 日本视频中文字幕一区二区三区| 国产欧美久久久精品影院| 8v天堂国产在线一区二区| 亚洲一区观看| 国产精品xnxxcom| 国产精品夜夜嗨| 天堂一区二区在线| 国产精品日日摸夜夜摸av| 欧美一区二区视频网站| 久久永久免费| 国产日韩一区二区三区| 牛人盗摄一区二区三区视频| 九九**精品视频免费播放| 亚洲一区二区四区蜜桃| 国产精品丝袜一区| 日韩一级免费观看| 欧美偷拍一区二区| 九色|91porny| 欧美日韩国产高清一区二区三区 | 不卡一区二区中文字幕| 国产乱对白刺激视频不卡| 日产国产高清一区二区三区| 亚洲精品中文在线观看| 欧美国产激情二区三区| 欧美草草影院在线视频| 91精品在线免费| 欧美精品777| 91精选在线观看| 欧美日韩精品专区| 欧美日韩一区二区欧美激情| 色哟哟国产精品免费观看| 免费亚洲一区二区| 中文字幕第一页久久| 欧美激情在线观看视频免费|