.Net上有什么輕量工具執(zhí)行SQL存儲(chǔ)過程?
Admin 2023-09-15 群英技術(shù)資訊 1570 次瀏覽
這篇文章將為大家詳細(xì)講解有關(guān)“.Net上有什么輕量工具執(zhí)行SQL存儲(chǔ)過程?”的知識(shí),下文有詳細(xì)的介紹,小編覺得挺實(shí)用的,對(duì)大家學(xué)習(xí)或工作或許有幫助,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。由于該工具近來被廣東省數(shù)個(gè)公司2B項(xiàng)目采用,且表現(xiàn)穩(wěn)定,得到良好驗(yàn)證,故在此推薦出來。
此工具在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、等)
下面,首先直接給出一個(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替代
承接上面“示例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<stu>("select * from t_Student").PagePartition(20, 5);
分頁(yè)后獲得的PagePiece對(duì)象中所包含的各類屬性/參數(shù),可參看這篇文章:高效分頁(yè)
前面談完“查詢”,我們接下來談?wù)劇霸?刪/改”的使用方式,下面是一個(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();
}
前面幾個(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();
最后,我們來談?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ì)說明(輔助參考):
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ù)
現(xiàn)在大家對(duì)于.Net上有什么輕量工具執(zhí)行SQL存儲(chǔ)過程?的內(nèi)容應(yīng)該都有一定的認(rèn)識(shí)了吧,希望這篇能對(duì)大家有所幫助。最后,想要了解更多,歡迎關(guān)注群英網(wǎng)絡(luò),群英網(wǎng)絡(luò)將為大家推送更多相關(guān)的文章。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:[email protected]進(jìn)行舉報(bào),并提供相關(guān)證據(jù),查實(shí)之后,將立刻刪除涉嫌侵權(quán)內(nèi)容。
猜你喜歡
這篇文章主要為大家介紹了.Net執(zhí)行SQL存儲(chǔ)過程之易用輕量工具詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
操作pdf是我們?nèi)粘i_發(fā)中經(jīng)常遇到的功能,下面這篇文章主要給大家介紹了關(guān)于.net?core利用PdfSharpCore操作PDF實(shí)例的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
最近?chatgpt?很火,由于網(wǎng)頁(yè)版本限制了?ip,還得必須開代理,用起來比較麻煩,所以我嘗試用?maui?開發(fā)一個(gè)聊天小應(yīng)用,結(jié)合?chatgpt?的開放?api?來實(shí)現(xiàn),這篇文章主要介紹了使用?.NET?MAUI?開發(fā)?ChatGPT?客戶端,需要的朋友可以參考下
這篇文章主要給大家介紹了關(guān)于如何在.Net?7中將Query綁定到數(shù)組的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
在某些情況,我們希望能延遲一個(gè)依賴的初始化。如果使用的是autofac,我們可以通過注入Lazy來實(shí)現(xiàn),這篇文章主要介紹了使用.net?core?自帶DI框架實(shí)現(xiàn)延遲加載,需要的朋友可以參考下
推薦內(nèi)容
成為群英會(huì)員,開啟智能安全云計(jì)算之旅
立即注冊(cè)關(guān)注或聯(lián)系群英網(wǎng)絡(luò)
7x24小時(shí)售前:400-678-4567
7x24小時(shí)售后:0668-2555666
24小時(shí)QQ客服
群英微信公眾號(hào)
CNNIC域名投訴舉報(bào)處理平臺(tái)
服務(wù)電話:010-58813000
服務(wù)郵箱:[email protected]
投訴與建議:0668-2555555
Copyright ? QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版權(quán)所有
增值電信經(jīng)營(yíng)許可證 : B1.B2-20140078 ICP核準(zhǔn)(ICP備案)粵ICP備09006778號(hào) 域名注冊(cè)商資質(zhì) 粵 D3.1-20240008