.Net执行SQL/存储过程之易用轻量工具
支持.Net/.Net Core/.Net Framework,可以部署在Docker, Windows, Linux, Mac。
由于该工具近来被广东省数个公司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 = "%周%" });//另一种写法1var 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);//另一种写法2var 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
BEGINinsert 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个示例,就能满足几乎所有的数据操作需求,且操作十分简易。
运行有问题,需要技术支持?请添加威信:894988403
运行有问题,需要技术支持?请添加威信:894988403
IDA内功能方法详细说明(辅助参考):
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 -- 受影响的行数
运行有问题,需要技术支持?请添加威信:894988403
运行有问题,需要技术支持?请添加威信:894988403
.Net执行SQL/存储过程之易用轻量工具相关推荐
- SQL server 定时自动执行SQL存储过程
当一个存储过程是为了生成报表,并且是周期性的,则不需要人工干预,由SQL作业定时自动执行些SQL存储过程即可. 本示例,假设已需要定时执行的存储过程为:Pr_test 工具/原料 SQL Server ...
- 使用jdbc执行SQL实现登录查询1-带配置文件和工具类
1.jdbc.properties 配置文件 url = jdbc:mysql:///db2 user = root password = 12345678 driver = com.mysql.cj ...
- PLSQL执行SQL脚本文件「适用批量」- 工具使用篇
前言 开局一条狗,装备全靠打 这篇文章应该是 2019 年最后一文章了,分享一下 PLSQL 是如何执行 SQL 脚本文件的. 关于执行 SQL 文件,下方是自己经常使用的一种方式,同样适用于批量文件 ...
- faked 一个用于 mock 后端 API 的轻量工具
一.简介 faked 是一个在前端开发中用于 mock 服务端接口的模块,轻量简单,无需要在本地启动 Server 也无需其它更多的资源,仅在浏览器中完成「请求拉截」,配合完整的「路由系统」轻而易举的 ...
- java后台处理APP表情-使用轻量工具emoji-java处理emoji表情字符
目录 pom依赖 java工具类 测试 Java Url编码转换 在APP开发中,大多需要涉及表情符号丰富APP,但是因为我们的数据库一般是utf8编码,是3个字节,而表情符号基本都是四个字节的uni ...
- 写MySQL存储过程实现动态执行SQL
写MySQL存储过程实现动态执行SQL --存储过程名和参数,参数中in表示传入参数,out标示传出参数,inout表示传入传出参数create procedure p_procedurecode(i ...
- jdbc mysql api_JDBC---一种用于执行SQL的Java API
JDBC是一种用于执行SQL的Java API,它本身是个商标名,但很多人把它认为是Java Database Connectivity(Java 数据库连接)的缩写. JDBC是一组访问数据库的AP ...
- 阿里云轻量和云服务器ECS区别对比大全(很详细)
阿里云轻量应用服务器使用门槛低,使用应用镜像可以一键部署所需环境,云服务器ECS适用于所有的使用场景,尤其是集群类高可用区架构,阿里云百科从云服务器使用场景.应用人群.使用限制.计费方式.网络带宽及镜 ...
- 使用腾讯云轻量服务器快速搭建网站教程
腾讯云轻量应用服务器搭建WordPress网站教程,先安装WordPress应用镜像,然后远程连接轻量应用服务器获取WP用户名和密码,域名DNS解析到轻量服务器IP地址,登陆WordPress后台管理 ...
最新文章
- Spark- 使用第三方依赖解析IP地址
- win7系统服务器环境配置,windows7系统安装与配置Tomcat服务器环境
- php zpo框架,Yii使用DeleteAll连表删除出现报错问题的解决方法
- Flutter的文本控件的基本使用
- java堆内存_java堆内存详解
- 【Java】JDK1.8新特性Date类----日期/时间改进
- MySql实现sequence功能的代码
- 计算机网络中TCP连接管理,计算机网络 TCP协议
- Java基础教程【第七章:包和接口】
- 如何启动mysql集群_如何搭建一个 MySQL 分布式集群
- PHP 乐心 发送验证码 验证码识别
- 服务器显示未识别网络怎么办,未识别网络怎么解决
- 网络基础--TCP/IP网络基础
- 信息系统项目管理师第一章复习内容(持续更新中……)
- 计算机操作系统之三:进程与线程的描述与控制
- python新式类和经典类区别_Python中新式类和经典类的区别,钻石继承
- vue父组件往子组件传值时报错Property or method 选择操作人 is not defined on the instance but referenced during rende
- 【信管1.3】计算机网络基础(一)网络标准与协议
- 疯狂涨知识!拥有百万粉丝的大牛讲述学Android的历程,挥泪整理面经
- SQLServer链接服务器