前言:本系列文章適合有初/中級.NET知識的同學閱讀(請在電腦上打開頁面,獲取更好的閱讀效果)。
(1)本系列文章,旨在講述研發一個中大型項目所需要了解的一系列“基本構件”,並提供這些“基本構件”在全網的【最簡單】、【最快速】使用方法!!(並不深究技術原理)
(2)通過閱讀本系列文章,能讓你在正規“項目研發”方面快速入門+進階,並能達成“小團隊構建大網站”的目的。
(3)本系列文章采用的技術,已成功應用到人工智能、產業互聯網、社區電商、游戲、金融風控、智慧醫療、等項目上。
支持.Net/.Net Core/.Net Framework,可以部署在Docker, Windows, Linux, Mac。
使用Sql語句操作數據庫,是應用程序的基礎必備知識。
本文要介紹的主角DeveloperSharp框架中的DataAccess數據庫訪問技術,提供了一種在.Net下使用Sql【快速+高效】操作各類數據庫的工具,在IDataAccess接口中被實現(它比ADO.NET要簡化、易用很多)
IDataAccess所在的命名空間是:DeveloperSharp.Framework.QueryEngine(需從NuGet引用DeveloperSharp包)
它主要提供了如下四大功能:
(1) 執行Sql語句
(2) 執行Sp存儲過程
(3) 創建參數(輸入/輸出/返回)
(4) 事務
它初始化的代碼如下:
若是在.Net Core環境下,代碼如下:
using DeveloperSharp.Framework.QueryEngine; -------------------------- //在Startup.cs或Program.cs文件中進行 Services.AddTransient<IDataAccess>((t) => { DatabaseInfo DIF; DIF.DatabaseType = DatabaseType.SQLServer; //設置數據庫類型 DIF.ConnectionString = "Server=localhost;Database=YZZ;Uid=sa;Pwd=123"; return DataAccessFactory.Create(DIF); });
若是在.Net Framework環境下,代碼如下:
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);
下面給出一個結合“Sql語句+參數+事務”的使用示例,代碼如下:
try { //開啟事務 IDA.TransactionBegin(); //執行帶參數的Sql語句 var newQuantity = IDA.CreateParameterInput("newQuantity", DbType.Int32, 506); var newName = IDA.CreateParameterInput("newName", DbType.String, 50, "帽子"); IDA.SqlExecuteNonQuery("update t_Order set Quantity=@newQuantity where Id=1", newQuantity); IDA.SqlExecuteNonQuery("update t_Order set Quantity=@newQuantity,Name=@newName where Id=3", newQuantity, newName); //完成事務 IDA.TransactionCommit(); } catch { //回滾事務 IDA.TransactionRollBack(); }
注意:創建參數時使用DbType類型,就是為了能在不同類型數據庫(SqlServer、MySql、Oracle、等)之間透明切換!(某些第三方工具在創建參數時不需要指定具體類型,雖然是簡化了,但某些情況下是會出錯的)
優勢:通過對DatabaseType屬性的設定,提供了對所有種類數據庫的支持(包括:MySql、Oracle、PostgreSQL、SqlServer、Sqlite、Firebird、達夢、以及人大金倉KingbaseES、神舟通用, 南大通用, 翰高, Access、等)
IDataAccess內擁有的詳細功能方法說明如下:
DatabaseType 聲明:DatabaseType DatabaseType{get;} 用途:獲取數據庫類型 返回:DatabaseType -- 數據庫類型枚舉 ConnectionString 聲明:string ConnectionString{get;} 用途:獲取數據庫鏈接字符串 返回:string -- 數據庫鏈接字符串 CreateParameterInput 聲明:IDataParameter CreateParameterInput(string name, DbType type, int size, object val) 用途:創建輸入參數 參數:(1)string name -- 參數名 (2)DbType type -- 參數類型 (3)int size -- 參數大小 (4)object val --參數值 返回:IDataParameter -- 輸入參數 CreateParameterInput 聲明:IDataParameter CreateParameterInput(string name, DbType type, object val) 用途:創建輸入參數 參數:(1)string name -- 參數名 (2)DbType type -- 參數類型 (3)object val --參數值 返回:IDataParameter -- 輸入參數 CreateParameterOutput 聲明:IDataParameter CreateParameterOutput(string name, DbType type, int size) 用途:創建輸出參數 參數:(1)string name --參數名 (2)DbType type --參數類型 (3)int size --參數大小 返回:IDataParameter -- 輸出參數 CreateParameterOutput 聲明:IDataParameter CreateParameterOutput(string name, DbType type) 用途:創建輸出參數 參數:(1)string name --參數名 (2)DbType type --參數類型 返回:IDataParameter -- 輸出參數 CreateParameterReturn() 聲明:IDataParameter CreateParameterReturn() 用途:創建返回參數 參數:(無) 返回:IDataParameter -- 返回參數 TransactionBegin 聲明:void TransactionBegin() 用途:開啟事務 參數:(無) 返回:(無) TransactionCommit 聲明:void TransactionCommit() 用途:完成事務 參數:(無) 返回:(無) TransactionRollBack 聲明:void TransactionRollBack 用途:回滾事務 參數:(無) 返回:(無) SqlExecuteNonQuery(Async) 聲明:int SqlExecuteNonQuery(string cmdText) 用途:執行Sql命令文本,返回受影響的行數 參數:(1)string cmdText -- Sql命令文本 返回:int --受影響的行數 SqlExecuteNonQuery(Async) 聲明:int SqlExecuteNonQuery(string cmdText , params IDataParameter[] cmdParameters) 用途:執行Sql命令文本,返回受影響的行數 參數:(1)string cmdText -- Sql命令文本 (2)params IDataParameter[] cmdParameters --命令參數數組 返回:int --受影響的行數 SpExecuteNonQuery(Async) 聲明:int SpExecuteNonQuery(string cmdText) 用途:執行Store Procedure命令文本,返回受影響的行數 參數:(1)string cmdText --Store Procedure命令文本 返回:int --受影響的行數 SpExecuteNonQuery(Async) 聲明:int SpExecuteNonQuery(string cmdText, params IDataParameter[] cmdParameters) 用途:執行Store Procedure命令文本,返回受影響的行數 參數:(1)string cmdText -- Store Procedure命令文本 (2)params IDataParameter[] cmdParameters --命令參數數組 返回:int --受影響的行數 SqlExecuteReader(Async) 聲明:IDataReader SqlExecuteReader(string cmdText) 用途:執行Sql命令文本,返回DataReader對象 參數:(1)string cmdText -- Sql命令文本 返回:IDataReader -- DataReader對象 SqlExecuteReader(Async) 聲明:IDataReader SqlExecuteReader (string cmdText, params IDataParameter[] cmdParameters) 用途:執行Sql命令文本,返回DataReader對象 參數:(1)string cmdText -- Sql命令文本 (2)params IDataParameter[] cmdParameters --命令參數數組 返回:IDataReader -- DataReader對象 SpExecuteReader(Async) 聲明:IDataReader SpExecuteReader(string cmdText) 用途:執行Store Procedure命令文本,返回DataReader對象 參數:(1)string cmdText -- Store Procedure命令文本 返回:IDataReader -- DataReader對象 SpExecuteReader(Async) 聲明:IDataReader SpExecuteReader(string cmdText, params IDataParameter[] cmdParameters) 用途:執行Store Procedure命令文本,返回DataReader對象 參數:(1)string cmdText -- Store Procedure命令文本 (2)params IDataParameter[] cmdParameters --命令參數數組 返回:IDataReader -- DataReader對象 SqlExecuteScalar(Async) 聲明:object SqlExecuteScalar(string cmdText) 用途:執行Sql命令文本,返回sum、avg、max等聚合函數計算出的值 參數:(1)string cmdText -- Sql命令文本 返回:object --聚合函數計算出的值 SqlExecuteScalar(Async) 聲明:object SqlExecuteScalar(string cmdText, params IDataParameter[] cmdParameters) 用途:執行Sql命令文本,返回sum、avg、max等聚合函數計算出的值 參數:(1)string cmdText -- Sql命令文本 (2)params IDataParameter[] cmdParameters --命令參數數組 返回:object --聚合函數計算出的值 SpExecuteScalar(Async) 聲明:object SpExecuteScalar(string cmdText) 用途:執行Store Procedure命令文本,返回sum、avg、max等聚合函數計算出的值 參數:(1)string cmdText -- Store Procedure命令文本 返回:object --聚合函數計算出的值 SpExecuteScalar(Async) 聲明:object SpExecuteScalar(string cmdText, params IDataParameter[] cmdParameters) 用途:執行Store Procedure命令文本,返回sum、avg、max等聚合函數計算出的值 參數:(1)string cmdText -- Store Procedure命令文本 (2)params IDataParameter[] cmdParameters --命令參數數組 返回:object --聚合函數計算出的值 SqlExecuteDataset(Async) 聲明:void SqlExecuteDataset(string cmdText, DataSet ds) 用途:執行Sql命令文本,獲取相應的DataSet數據集 參數:(1)string cmdText -- Sql命令文本 (2)DataSet ds --數據集對象 返回:(無) SqlExecuteDataset(Async) 聲明:void SqlExecuteDataset(string cmdText, DataSet ds, string tableName) 用途:執行Sql命令文本,獲取相應的DataSet數據集 參數:(1)string cmdText -- Sql命令文本 (2)DataSet ds --數據集對象 (3)string tableName --數據集中的數據表名 返回:(無) SqlExecuteDataset(Async) 聲明:void SqlExecuteDataset(string cmdText, DataSet ds, params IDataParameter[] cmdParameters) 用途:執行Sql命令文本,獲取相應的DataSet數據集 參數:(1)string cmdText -- Sql命令文本 (2)DataSet ds --數據集對象 (3)params IDataParameter[] cmdParameters --命令參數數組 返回:(無) SqlExecuteDataset(Async) 聲明:void SqlExecuteDataset(string cmdText, DataSet ds, string tableName, params IDataParameter[] cmdParameters) 用途:執行Sql命令文本,獲取相應的DataSet數據集 參數:(1)string cmdText -- Sql命令文本 (2)DataSet ds --數據集對象 (3)string tableName --數據集中的數據表名 (4)params IDataParameter[] cmdParameters --命令參數數組 返回:(無) SpExecuteDataset(Async) 聲明:void SpExecuteDataset(string cmdText, DataSet ds) 用途:執行Store Procedure命令文本,獲取相應的DataSet數據集 參數:(1)string cmdText -- Store Procedure命令文本 (2)DataSet ds --數據集對象 返回:(無) SpExecuteDataset(Async) 聲明:void SpExecuteDataset(string cmdText, DataSet ds, string tableName) 用途:執行Store Procedure命令文本,獲取相應的DataSet數據集 參數:(1)string cmdText -- Store Procedure命令文本 (2)DataSet ds --數據集對象 (3)string tableName --數據集中的數據表名 返回:(無) SpExecuteDataset(Async) 聲明:void SpExecuteDataset(string cmdText, DataSet ds, params IDataParameter[] cmdParameters) 用途:執行Store Procedure命令文本,獲取相應的DataSet數據集 參數:(1)string cmdText -- Store Procedure命令文本 (2)DataSet ds --數據集對象 (3)params IDataParameter[] cmdParameters --命令參數數組 返回:(無) SpExecuteDataset(Async) 聲明:void SpExecuteDataset(string cmdText, DataSet ds, string tableName, params IDataParameter[] cmdParameters) 用途:執行Store Procedure命令文本,獲取相應的DataSet數據集 參數:(1)string cmdText -- Store Procedure命令文本 (2)DataSet ds --數據集對象 (3)string tableName --數據集中的數據表名 (4)params IDataParameter[] cmdParameters --命令參數數組 返回:(無)
【附注】:下載示例均已成功運行通過。但有些輔助設置需要自己調整。技術支持+獲取更多寶貴資源:請微信掃描文末二維碼,備注“進群”!
推薦閱讀
- .NET中大型項目開發必備(1)–UUID全球通用唯一識別碼
- .NET中大型項目開發必備(2)–CORS跨域訪問
- .NET中大型項目開發必備(3)–數據庫的負載均衡
- .NET中大型項目開發必備(4)–數據庫的讀寫分離
- .NET中大型項目開發必備(5)–Web服務/WebApi的負載均衡
- .NET中大型項目開發必備(6)–IUtility工具介紹
- .NET中大型項目開發必備(7)–DataAccess數據庫訪問技術
- .NET中大型項目開發必備(8)–高效分頁
- .NET中大型項目開發必備(9)--http請求調用(Post與Get)
- .NET中大型項目開發必備(10)--圖片的裁剪、縮放、與加水印
- .NET中大型項目開發必備(11)--使用Redis緩存
- .NET中大型項目開發必備(12)--使用MQ消息隊列
- .NET中大型項目開發必備(13)--DataAccess數據庫訪問技術(續)
- .NET中大型項目開發必備(14)--數據庫的負載均衡(續)