.NET/C#大型项目研发必备(7)--DataAccess数据库访问技术

前言:本系列文章适合有初/中级.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)
用途:创建输入参数
参数:(1string name      --  参数名
     (2)DbType type   --  参数类型
	 (3int size		-- 参数大小
	 (4object val		--参数值
返回:IDataParameter 	--  输入参数

CreateParameterInput
声明:IDataParameter CreateParameterInput(string name, DbType type, object val)
用途:创建输入参数
参数:(1string name      --  参数名
     (2)DbType type   --  参数类型
	 (3object val		--参数值
返回:IDataParameter 	--  输入参数

CreateParameterOutput
声明:IDataParameter CreateParameterOutput(string name, DbType type, int size)
用途:创建输出参数
参数:(1string name	--参数名
	 (2)DbType type	--参数类型
	 (3int size	--参数大小
返回:IDataParameter    --  输出参数

CreateParameterOutput
声明:IDataParameter CreateParameterOutput(string name, DbType type)
用途:创建输出参数
参数:(1string 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命令文本,返回受影响的行数
参数:(1string  cmdText	 -- Sql命令文本
返回:int	--受影响的行数

SqlExecuteNonQuery(Async)
声明:int SqlExecuteNonQuery(string cmdText , params IDataParameter[] cmdParameters)
用途:执行Sql命令文本,返回受影响的行数
参数:(1string  cmdText	 -- Sql命令文本
	 (2params IDataParameter[] cmdParameters	--命令参数数组
返回:int	--受影响的行数

SpExecuteNonQuery(Async)
声明:int SpExecuteNonQuery(string cmdText)
用途:执行Store Procedure命令文本,返回受影响的行数
参数:(1string  cmdText	--Store Procedure命令文本
返回:int	--受影响的行数

SpExecuteNonQuery(Async)
声明:int SpExecuteNonQuery(string cmdText, params IDataParameter[] cmdParameters)
用途:执行Store Procedure命令文本,返回受影响的行数
参数:(1string cmdText	-- Store Procedure命令文本
	 (2params IDataParameter[] cmdParameters	--命令参数数组
返回:int		--受影响的行数

SqlExecuteReader(Async)
声明:IDataReader SqlExecuteReader(string cmdText)
用途:执行Sql命令文本,返回DataReader对象
参数:(1string  cmdText	-- Sql命令文本
返回:IDataReader	-- DataReader对象

SqlExecuteReader(Async)
声明:IDataReader SqlExecuteReader (string cmdText, params IDataParameter[] cmdParameters)
用途:执行Sql命令文本,返回DataReader对象
参数:(1string  cmdText	-- Sql命令文本
	 (2params IDataParameter[] cmdParameters	--命令参数数组
返回:IDataReader	-- DataReader对象

SpExecuteReader(Async)
声明:IDataReader SpExecuteReader(string cmdText)
用途:执行Store Procedure命令文本,返回DataReader对象
参数:(1string  cmdText	-- Store Procedure命令文本
返回:IDataReader	-- DataReader对象

SpExecuteReader(Async)
声明:IDataReader SpExecuteReader(string cmdText, params IDataParameter[] cmdParameters)
用途:执行Store Procedure命令文本,返回DataReader对象
参数:(1string  cmdText	-- Store Procedure命令文本
	 (2params IDataParameter[] cmdParameters	--命令参数数组
返回:IDataReader	-- DataReader对象

SqlExecuteScalar(Async)
声明:object SqlExecuteScalar(string cmdText)
用途:执行Sql命令文本,返回sum、avg、max等聚合函数计算出的值
参数:(1string  cmdText	-- Sql命令文本
返回:object	--聚合函数计算出的值

SqlExecuteScalar(Async)
声明:object SqlExecuteScalar(string cmdText, params IDataParameter[] cmdParameters)
用途:执行Sql命令文本,返回sum、avg、max等聚合函数计算出的值
参数:(1string  cmdText	-- Sql命令文本
	 (2params IDataParameter[]  cmdParameters	--命令参数数组
返回:object	--聚合函数计算出的值

SpExecuteScalar(Async)
声明:object SpExecuteScalar(string cmdText)
用途:执行Store Procedure命令文本,返回sum、avg、max等聚合函数计算出的值
参数:(1string  cmdText	-- Store Procedure命令文本
返回:object	--聚合函数计算出的值

SpExecuteScalar(Async)
声明:object SpExecuteScalar(string cmdText, params IDataParameter[] cmdParameters)
用途:执行Store Procedure命令文本,返回sum、avg、max等聚合函数计算出的值
参数:(1string  cmdText	-- Store Procedure命令文本
	 (2params IDataParameter[] cmdParameters	--命令参数数组
返回:object	--聚合函数计算出的值

SqlExecuteDataset(Async)
声明:void SqlExecuteDataset(string cmdText, DataSet ds)
用途:执行Sql命令文本,获取相应的DataSet数据集
参数:(1string  cmdText	-- Sql命令文本
	 (2)DataSet ds	--数据集对象
返回:(无)

SqlExecuteDataset(Async)
声明:void  SqlExecuteDataset(string cmdText, DataSet ds, string tableName)
用途:执行Sql命令文本,获取相应的DataSet数据集
参数:(1string  cmdText	-- Sql命令文本
	 (2)DataSet ds	--数据集对象
	 (3string tableName	--数据集中的数据表名
返回:(无)

SqlExecuteDataset(Async)
声明:void SqlExecuteDataset(string cmdText, DataSet ds, params IDataParameter[] cmdParameters)
用途:执行Sql命令文本,获取相应的DataSet数据集
参数:(1string  cmdText	-- Sql命令文本
	 (2)DataSet ds	--数据集对象
	 (3params IDataParameter[] cmdParameters	--命令参数数组
返回:(无)

SqlExecuteDataset(Async)
声明:void SqlExecuteDataset(string cmdText, DataSet ds, string tableName, params IDataParameter[] cmdParameters)
用途:执行Sql命令文本,获取相应的DataSet数据集
参数:(1string  cmdText	-- Sql命令文本
	 (2)DataSet ds	--数据集对象
	 (3string tableName	--数据集中的数据表名
	 (4params IDataParameter[] cmdParameters	--命令参数数组
返回:(无)

SpExecuteDataset(Async)
声明:void SpExecuteDataset(string cmdText, DataSet ds)
用途:执行Store Procedure命令文本,获取相应的DataSet数据集
参数:(1string  cmdText	-- Store Procedure命令文本
	 (2)DataSet ds	--数据集对象
返回:(无)

SpExecuteDataset(Async)
声明:void SpExecuteDataset(string cmdText, DataSet ds, string tableName)
用途:执行Store Procedure命令文本,获取相应的DataSet数据集
参数:(1string  cmdText	-- Store Procedure命令文本
	 (2)DataSet ds	--数据集对象
	 (3string tableName	--数据集中的数据表名
返回:(无)

SpExecuteDataset(Async)
声明:void SpExecuteDataset(string cmdText, DataSet ds, params IDataParameter[] cmdParameters)
用途:执行Store Procedure命令文本,获取相应的DataSet数据集
参数:(1string  cmdText	-- Store Procedure命令文本
	 (2)DataSet ds	--数据集对象
	 (3params IDataParameter[] cmdParameters	--命令参数数组
返回:(无)

SpExecuteDataset(Async)
声明:void SpExecuteDataset(string cmdText, DataSet ds, string tableName, params IDataParameter[] cmdParameters)
用途:执行Store Procedure命令文本,获取相应的DataSet数据集
参数:(1string  cmdText	-- Store Procedure命令文本
	 (2)DataSet ds	--数据集对象
	 (3string tableName	--数据集中的数据表名
	 (4params IDataParameter[] cmdParameters	--命令参数数组
返回:(无)

【附注】:下载示例均已成功运行通过。但有些辅助设置需要自己调整。技术支持+获取更多宝贵资源:请微信扫描文末二维码,备注“进群”!

推荐阅读


如果文章对你有帮助,请点赞、收藏、关注(原创内容,欢迎转载,转载请注明出处)
出处:https://developersharp.blog.csdn.net/
【技术支持+获取更多宝贵资源,点击下方名片,备注“进群”】

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值