支持.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/存储过程之易用轻量工具相关推荐

  1. SQL server 定时自动执行SQL存储过程

    当一个存储过程是为了生成报表,并且是周期性的,则不需要人工干预,由SQL作业定时自动执行些SQL存储过程即可. 本示例,假设已需要定时执行的存储过程为:Pr_test 工具/原料 SQL Server ...

  2. 使用jdbc执行SQL实现登录查询1-带配置文件和工具类

    1.jdbc.properties 配置文件 url = jdbc:mysql:///db2 user = root password = 12345678 driver = com.mysql.cj ...

  3. PLSQL执行SQL脚本文件「适用批量」- 工具使用篇

    前言 开局一条狗,装备全靠打 这篇文章应该是 2019 年最后一文章了,分享一下 PLSQL 是如何执行 SQL 脚本文件的. 关于执行 SQL 文件,下方是自己经常使用的一种方式,同样适用于批量文件 ...

  4. faked 一个用于 mock 后端 API 的轻量工具

    一.简介 faked 是一个在前端开发中用于 mock 服务端接口的模块,轻量简单,无需要在本地启动 Server 也无需其它更多的资源,仅在浏览器中完成「请求拉截」,配合完整的「路由系统」轻而易举的 ...

  5. java后台处理APP表情-使用轻量工具emoji-java处理emoji表情字符

    目录 pom依赖 java工具类 测试 Java Url编码转换 在APP开发中,大多需要涉及表情符号丰富APP,但是因为我们的数据库一般是utf8编码,是3个字节,而表情符号基本都是四个字节的uni ...

  6. 写MySQL存储过程实现动态执行SQL

    写MySQL存储过程实现动态执行SQL --存储过程名和参数,参数中in表示传入参数,out标示传出参数,inout表示传入传出参数create procedure p_procedurecode(i ...

  7. jdbc mysql api_JDBC---一种用于执行SQL的Java API

    JDBC是一种用于执行SQL的Java API,它本身是个商标名,但很多人把它认为是Java Database Connectivity(Java 数据库连接)的缩写. JDBC是一组访问数据库的AP ...

  8. 阿里云轻量和云服务器ECS区别对比大全(很详细)

    阿里云轻量应用服务器使用门槛低,使用应用镜像可以一键部署所需环境,云服务器ECS适用于所有的使用场景,尤其是集群类高可用区架构,阿里云百科从云服务器使用场景.应用人群.使用限制.计费方式.网络带宽及镜 ...

  9. 使用腾讯云轻量服务器快速搭建网站教程

    腾讯云轻量应用服务器搭建WordPress网站教程,先安装WordPress应用镜像,然后远程连接轻量应用服务器获取WP用户名和密码,域名DNS解析到轻量服务器IP地址,登陆WordPress后台管理 ...

最新文章

  1. Spark- 使用第三方依赖解析IP地址
  2. win7系统服务器环境配置,windows7系统安装与配置Tomcat服务器环境
  3. php zpo框架,Yii使用DeleteAll连表删除出现报错问题的解决方法
  4. Flutter的文本控件的基本使用
  5. java堆内存_java堆内存详解
  6. 【Java】JDK1.8新特性Date类----日期/时间改进
  7. MySql实现sequence功能的代码
  8. 计算机网络中TCP连接管理,计算机网络 TCP协议
  9. Java基础教程【第七章:包和接口】
  10. 如何启动mysql集群_如何搭建一个 MySQL 分布式集群
  11. PHP 乐心 发送验证码 验证码识别
  12. 服务器显示未识别网络怎么办,未识别网络怎么解决
  13. 网络基础--TCP/IP网络基础
  14. 信息系统项目管理师第一章复习内容(持续更新中……)
  15. 计算机操作系统之三:进程与线程的描述与控制
  16. python新式类和经典类区别_Python中新式类和经典类的区别,钻石继承
  17. vue父组件往子组件传值时报错Property or method 选择操作人 is not defined on the instance but referenced during rende
  18. 【信管1.3】计算机网络基础(一)网络标准与协议
  19. 疯狂涨知识!拥有百万粉丝的大牛讲述学Android的历程,挥泪整理面经
  20. SQLServer链接服务器

热门文章

  1. 录屏软件用什么好?直播会议用什么录屏软件?
  2. PON技术,全光网络建设架构
  3. 图片素材网站总结--高清大图、免费下载、无需版权、创意趣味
  4. java打印1970年之后日历
  5. Jetpack全组件开发短视频应用App
  6. lambda表达式java项目常用_一文带你彻底搞懂Lambda表达式
  7. Ajax(阿贾克斯)基础
  8. HyperDeck Extreme 8K HDR硬盘录机
  9. java 线程状态监控_干货:教你如何监控 Java 线程池运行状态
  10. 每日一招:散户巧寻主力筹码的方法