国产-达梦数据库及在.Net 下的增删改查 .NET .ORM
一,简介
偶然看到了国产数据库——达梦数据库。顿时起了兴趣,捣鼓了一番。
下面这段简介摘自百度百科
达梦数据库是武汉华工达梦数据库有限公司推出的具有完全自主知识产权的高性能数据库产品。它采用“三权分立”的安全管理机制,安全级别达到B1级,并在大数据量存储管理、并发控制、数据查询优化处理、事务处理、备份与恢复和支持SMP系统等诸多方面都有突破性进展和提高。更多介绍:http://baike.baidu.com/view/581717.htm
达梦数据库有免费版和收费版(感觉国人就是有点急功近利)。
免费版下载地址:https://www.dameng.com/
有Windouws版和Linux版。
二,安装
我这里选择Windows版下载,当前版本6.2,UI还是做得很漂亮的。
安装过程很简单,一路“下一步”就行了:
2.1) 选择语言版本
2.2) 选择验证Key文件,免费版的下载包里提供了验证文件。
2.3)设置初始化参数
2.4)修改数据库口令(密码),当然也可以无视它。默认密码是: SYSDBA
3.1) 打开管 “理工具Manager”登陆
输入安装时设置的口令,如果安装时没有修改口令,则输入初试默认口令“SYSDBA”
3.2) 登陆进去后看到系统默认有两个数据库“SYSTEM”、“BOOKSHOP”。这里我自己新建了一个叫“Cnblogs”的数据库。新建很简单,和操作SQLServer差不多。
3.3) 点开“cnblogs”节点,会发现,它不像SQLServer那样,下面直接是“表”、“视图”等。
它下面是“模式”,一个数据库可以有多个模式,模式下面才会有“表”、“视图”等等。
模式用来代表特定数据库中的一个对象集,在概念上可将其看作是包含表、视图、索引和权限定义的对象集合。一个模式只作用于一个数据库,不同的数据库可以有同名模式。
我在模式“SYSDBA”下面建了个“Users”表。
3.4) 达梦SQL
因为达梦数据库有一个“模式”的概念,因此它的查询语句和SQLServer 也有所不同,要在“表”前加上“模式”。如:
当然你也可以不加,直接像在SQLServer 里那样,写成
这时它会默认使用SYSDBA模式。
三、ORM 操作达梦数据库
.net framework 安装 sqlsugar
.net 5&.net core 安装sqlsugarcore
nuget只需要引用一个dll文件,开箱就用简单方便
四、连接字符串
更接近Oracle,更偏向自主研发,对开发人员友好度不如金仓
至于其它国产数据库基本上都和PgSql 99.9%一样,建议你们还是用人大金仓比较省心
连接字符串:
老版本 :PORT=5236;DATABASE=DAMENG;HOST=localhost;PASSWORD=SYSDBA;USER ID=SYSDBA
新版本: Server=localhost; User Id=SYSDBA; PWD=SYSDBA;DATABASE=新DB
五、CURD
创建数据库对象
//创建数据库对象 SqlSugarClient SqlSugarClient db = new SqlSugarClient(new ConnectionConfig() { ConnectionString = "Server=.xxxxx",//连接符字串 DbType = DbType.Dm, //设置为达梦 IsAutoCloseConnection = true //不设成true要手动close });
查询
db.Queryable<Student>().ToList()//查询所有
db.Queryable<Student>().Where(it=>it.Id==1).ToList()//根据条件查询
//分页
int pageIndex = 1; // pageindex是从1开始的不是从零开始的
int pageSize = 20;
int totalCount=0;
//单表分页
var page = db.Queryable<Student>().ToPageList(pageIndex, pageSize, ref totalCount);
插入
//返回插入行数 db.Insertable(insertObj).ExecuteCommand(); //都是参数化实现 //插入返回自增列 db.Insertable(insertObj).ExecuteReturnIdentity(); //返回雪花ID 看文档3.1具体用法(在最底部) long id= db.Insertable(实体).ExecuteReturnSnowflakeId();
删除
//单个实体 db.Deleteable<Student>().Where(new Student() { Id = 1 }).ExecuteCommand(); //List<实体> List<Student> list=new List<Student>(){ new Student() { Id = 1 } }; db.Deleteable<Student>(list).ExecuteCommand(); //批量删除
更新
//根据主键更新单条 参数 Class var result= db.Updateable(updateObj).ExecuteCommand(); //批量更新参数 List<Class> var result= db.Updateable(updateObjs).ExecuteCommand();
源码:
https://github.com/donet5/SqlSugar