1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 【愚公系列】10月 .NET CORE工具案例-DeveloperSharp(数据库访问技术)

【愚公系列】10月 .NET CORE工具案例-DeveloperSharp(数据库访问技术)

时间:2019-11-06 18:53:49

相关推荐

【愚公系列】10月 .NET CORE工具案例-DeveloperSharp(数据库访问技术)

🏆 作者简介,愚公搬代码

🏆《头衔》:华为云特约编辑,华为云云享专家,华为开发者专家,华为产品云测专家,CSDN博客专家,阿里云专家博主,腾讯云优秀博主,掘金优秀博主,51CTO博客专家等。

🏆《近期荣誉》:CSDN博客之星TOP2,华为云十佳博主等。

🏆《博客内容》:.NET、Java、Python、Go、Node、前端、IOS、Android、鸿蒙、Linux、物联网、网络安全、大数据、人工智能、U3D游戏、小程序等相关领域知识。

🏆🎉欢迎 👍点赞✍评论⭐收藏

文章目录

🚀前言🚀一、DeveloperSharp的使用🔎1.安装包🔎2.初始化数据库连接🦋2.1 查询🦋2.2 分页🦋2.3 增/删/改🦋2.4 输出参数🦋2.5 存储过程 🚀备注🚀感谢:给读者的一封信

🚀前言

数据库访问技术是指访问和操作数据库的方法和技术。数据库访问技术主要有以下几种:

SQL:SQL(Structured Query Language)是一种专门用于管理关系型数据库的语言,它可以用来进行数据的增删改查,以及对数据库表、视图等进行创建、修改和删除等操作。

JDBC:JDBC(Java Database Connectivity)是一种用于在Java应用程序中访问数据库的API。它提供了一系列的接口和类,可以通过Java代码连接和操作各种数据库。

ORM:ORM(Object-Relational Mapping)是一种将对象和关系数据库映射起来的技术,它可以使得开发人员使用面向对象的方式来访问和操作数据库,而无需手写SQL语句。

NoSQL:NoSQL(Not Only SQL)是一类非关系型数据库,它可以存储非结构化和半结构化的数据,如文档、键值对、图形等。NoSQL数据库通常具有高可扩展性、高性能和高可用性等特点。

ODBC:ODBC(Open Database Connectivity)是一种面向程序开发人员的数据库访问技术,可以使得不同操作系统和编程语言下的应用程序能够访问和操作各种数据库。

本文主要介绍DeveloperSharp的使用,DeveloperSharp是一个研发中大型项目必备的系统平台,也是一个低代码平台。

它主要包括了如下一些功能:

基于Sql语句、存储过程、事务、分页的数据库操作。并几乎支持市面上所有种类的数据库。图片操作。裁剪、缩放、加水印。http请求调用(Post与Get)高效分页Web服务/WebApi的负载均衡数据库的负载均衡,以及读写分离CORS跨域访问UUID全球通用唯一识别码MQ消息队列(请另行使用DeveloperSharp.RabbitMQ包)Redis缓存(请另行使用DeveloperSharp.Redis包)“异种数据库”的负载均衡其他相关功能

🚀一、DeveloperSharp的使用

🔎1.安装包

DeveloperSharp

🔎2.初始化数据库连接

1、WEB项目

//在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);});

2.控制台项目

using DeveloperSharp.Framework.QueryEngine;DatabaseInfo DIF;DIF.DatabaseType = DatabaseType.SQLServer; //设置数据库类型DIF.ConnectionString = "Server=localhost;Database=PSIDBase;Uid=sa;Pwd=1";IDataAccess IDA = DataAccessFactory.Create(DIF);

通过对DatabaseType属性的设定,提供了对所有种类数据库的支持(包括:MySql、Oracle、PostgreSQL、SqlServer、Sqlite、Firebird、达梦、以及人大金仓KingbaseES、神舟通用, 南大通用, 翰高, Access、等)

🦋2.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实体类代码如下形式:

//此实体类中的Id、Name、Age、Birth、MyLevel属性名,要与数据表中的字段名一一对应public class stu{public int? Id {get; set; }//数据库中该字段若存在Null值,类型后需要加问号?public string Name {get; set; }public int? Age {get; set; }public DateTime? Birth {get; set; }public Level? MyLevel {get; set; }//也可以使用枚举,会自动转换}public enum Level{Student=100,//学生Teacher=200,//老师Manager=300,//管理员Principle=400//校长}

🦋2.2 分页

若我们要对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);

🦋2.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();}

🦋2.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();

🦋2.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 intASBEGINinsert 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);

🚀备注

IDA内功能方法详细说明(辅助参考):

SqlExecute<T> (异步为:SqlExecuteAsync<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> (异步为:SqlExecuteAsync<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 (异步为:SqlExecuteAsync)声明:int SqlExecute(string cmdText, params IDataParameter[] Params)用途:执行Sql语句(Insert/Update/Delete类)参数:(1)string cmdText -- Sql语句(2)params IDataParameter[] Params -- 参数组返回:int -- 受影响的行数SqlExecute (异步为:SqlExecuteAsync)声明: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> (异步为:SpExecuteAsync<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> (异步为:SpExecuteAsync<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 (异步为:SpExecuteAsync)声明:int SpExecute(string cmdText, params IDataParameter[] Params)用途:执行Sp存储过程(Insert/Update/Delete类)参数:(1)string cmdText -- Sp存储过程名(2)params IDataParameter[] Params -- 参数组返回:int -- 受影响的行数SpExecute (异步为:SpExecuteAsync)声明: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 -- 受影响的行数

🚀感谢:给读者的一封信

亲爱的读者,

我在这篇文章中投入了大量的心血和时间,希望为您提供有价值的内容。这篇文章包含了深入的研究和个人经验,我相信这些信息对您非常有帮助。

如果您觉得这篇文章对您有所帮助,我诚恳地请求您考虑赞赏1元钱的支持。这个金额不会对您的财务状况造成负担,但它会对我继续创作高质量的内容产生积极的影响。

我之所以写这篇文章,是因为我热爱分享有用的知识和见解。您的支持将帮助我继续这个使命,也鼓励我花更多的时间和精力创作更多有价值的内容。

如果您愿意支持我的创作,请扫描下面二维码,您的支持将不胜感激。同时,如果您有任何反馈或建议,也欢迎与我分享。

再次感谢您的阅读和支持!

最诚挚的问候, “愚公搬代码”

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。