網站首頁 編程語言 正文
正文
由于該工具近來被廣東省數個公司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<stu>("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 -- ?受影響的行數
原文鏈接:https://www.cnblogs.com/dotnet-college/p/16993565.html
相關推薦
- 2022-02-02 css 水波紋效果
- 2022-01-16 jQuery實現動畫效果和導航欄動態顯示
- 2023-06-03 一文帶你吃透Python中的os和sys模塊_python
- 2022-10-22 React拖拽調整大小的組件_React
- 2022-08-23 .net中的Span<T>類和Memory<T>類介紹_基礎應用
- 2022-08-18 C++詳解如何實現單鏈表_C 語言
- 2022-05-23 vmware增加新硬盤無需重啟即可生效的命令腳本_VMware
- 2022-10-23 C#中的var關鍵字用法介紹_C#教程
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支