一,簡介
偶然看到了國產數據庫——達夢數據庫。頓時起了興趣,搗鼓了一番。
下面這段簡介摘自百度百科
達夢數據庫是武漢華工達夢數據庫有限公司推出的具有完全自主知識產權的高性能數據庫產品。它采用“三權分立”的安全管理機制,安全級別達到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