前言:數據庫
項目實戰中不管是業務編碼仍是通用編碼,總會概括出一些通用的工具類。放入項目中一勞永逸,讓兄弟姐妹們避免編寫重複代碼。因此利用了工做之餘的時間,將這些散落在多個項目中精緻優雅的工具類,概括起來造成工程,方便後續工做的使用和便捷開發。工具
根據實際需求,編寫了此工具。目前只支持SQLServer數據庫,不過我本身有時間也會完成其餘數據庫支持的,有興趣的讀者能夠繼續擴展支持其餘數據庫。編碼
功能:spa
1、能自動得到用戶數據庫中的全部數據表;
2、能根據用戶所選的數據表,自動生成實體類;
3、能自動產生 C# 實體類的(*.cs)代碼文件;3d
實體工具:code
1、界面截圖:cdn
2、SQL語句部分代碼
blog
----1. 獲取全部的數據庫名----- SELECT NAME FROM MASTER.DBO.SYSDATABASES ORDER BY NAME -----2. 獲取全部的表名------ SELECT NAME FROM SYSOBJECTS WHERE XTYPE='U' ORDER BY NAME --XTYPE='U':表示全部用戶表; --XTYPE='S':表示全部系統表; SELECT NAME FROM SYSOBJECTS WHERE TYPE = 'U' AND SYSSTAT = '83' ----注意:通常狀況只須要TYPE = 'U',但有時候會有系統表混在其中(不知道什麼緣由),加上後面一句後就能刪除這些系統表了。
3、C#部分代碼開發
/// <summary> /// 獲取全部數據庫 /// </summary> /// <param name="connection"></param> /// <returns></returns> public static List<DbTable> GetAllDataBaseName(string connection) { List<DbTable> dic = new List<DbTable>(); string ConnString = "select name from Master.sys.SysDatabases order by name"; SqlConnection connect = new SqlConnection(connection); SqlCommand cmd = new SqlCommand(ConnString, connect); try { if (connect.State == ConnectionState.Closed) { connect.Open(); IDataReader dr = cmd.ExecuteReader(); dic.Clear(); while (dr.Read()) { dic.Add(new DbTable { value = dr["name"].ToString(), key = dr["name"].ToString() }); } dr.Close(); } } catch (Exception ex) { throw new AggregateException("得到數據庫地址錯誤,你想上天嗎?"); } finally { if (connect != null && connect.State == ConnectionState.Open) { connect.Dispose(); } } return dic; }
/// <summary> /// 寫文件 /// </summary> /// <param name="fileName">文件完整路徑</param> /// <param name="content">內容</param> private static void WriteAndSave(string fileName, string content) { //實例化一個文件流--->與寫入文件相關聯 using (var fs = new FileStream(fileName, FileMode.Create, FileAccess.Write)) { //實例化一個StreamWriter-->與fs相關聯 using (var sw = new StreamWriter(fs)) { //開始寫入 sw.Write(content); //清空緩衝區 sw.Flush(); //關閉流 sw.Close(); fs.Close(); } } }
工具下載:get
總結:
1.避免編寫重複代碼,編寫此工具生成實體類快速開發。
2.這類工具在網上已有很多,可是本身能夠概括起來造成工程,放入項目中,不只本身從中能夠學到新的知識也同時提高了本身的總結概括能力。
3.此工具還未完善,只支持SQLServer數據庫,不過我本身有時間也會完成其餘數據庫支持的,有興趣的讀者能夠繼續擴展支持其餘數據庫。
4.若是有不對的或不理解的地方,但願你們能夠多多指正,提出問題,才能站在更多用戶角度,編寫了出更便捷實用的工具。