国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

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

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

正文

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

此工具在IDataAccess接口中提供。 

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

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

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

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

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

(4)     事務(wù)

它初始化的代碼如下:

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

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

【示例1:查詢】

下面,首先直接給出一個(gè)“查詢多數(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實(shí)體類代碼如下形式:

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

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

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

【示例2:分頁(yè)】

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

using DeveloperSharp.Extension;//調(diào)用“分頁(yè)功能”需要引用此命名空間
--------------------------
   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);

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

【示例3:增/刪/改】

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

try
   {
       //開啟事務(wù)
       IDA.TransactionBegin();
       //修改數(shù)據(jù)(多語(yǔ)句)
       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);
       //完成事務(wù)
       IDA.TransactionCommit();
   }
   catch
   {
       //回滾事務(wù)
       IDA.TransactionRollBack();
   }

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

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

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

最后,我們來(lái)談?wù)勅绾握{(diào)用存儲(chǔ)過程。我們創(chuàng)建一個(gè)存儲(chǔ)過程,它帶有輸入、輸出、返回三種類型的參數(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)用該存儲(chǔ)過程的示例代碼如下:

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

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

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

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

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

標(biāo)簽: ASP.NET
主站蜘蛛池模板: 亚洲视频一区二区在线观看 | 久久久999国产精品 久久久99精品免费观看 | 亚洲欧美大片 | 欧美精品久久一区二区三区 | 免费观看a毛片一区二区不卡 | 婷婷的久久五月综合先锋影音 | 国产毛片一区二区三区精品 | 三级毛片基地 | 亚洲国产一区二区三区综合片 | 久草福利资源网站免费 | 92午夜国产福利视频1000 | 图片区偷拍区小说区 | 欧美xx在线观看 | 亚洲国产成人久久午夜 | 免费精品久久久久久中文字幕 | 美女张开腿男人桶 | 日本欧美色 | 欧美在线观看高清一二三区 | 国产成年 | 一区二区三区观看 | 亚洲国产精品大秀在线播放 | 日韩色网站 | 玖玖精品视频在线观看 | 一级毛片中国 | 日鲁夜鲁鲁狠狠综合视频 | 久久香蕉国产精品一区二区三 | 亚州精品一区二区三区 | 日韩一级精品久久久久 | 天天看片日本 | 九草在线视频 | 欧美精品一区二区三区免费观看 | 欧美综合在线观看 | 一级做a爰片久久毛片人呢 一级做a爰片久久毛片唾 | 亚洲国产成人久久精品影视 | 另类视频区第一页 | 日韩久久一区二区三区 | 玖玖影院在线观看 | 一级美女视频 | 精品国产成人 | 美国一级欧美三级 | 深爱五月开心网亚洲综合 |