前言:
專案實戰中不論是業務編碼還是通用編碼,總會歸納出一些通用的工具類。放入專案中一勞永逸,讓兄弟姐妹們避免編寫重複程式碼。所以利用了工作之餘的時間,將這些散落在多個專案中精緻優雅的工具類,歸納起來形成工程,方便後續工作的使用和便捷開發。
根據實際需求,編寫了此工具。目前只支援SQLServer資料庫,不過我自己有時間也會完成其他資料庫支援的,有興趣的讀者可以繼續擴充套件支援其他資料庫。
功能:
1、能自動獲得使用者資料庫中的所有資料表;
2、能根據使用者所選的資料表,自動生成實體類;
3、能自動產生 C# 實體類的(*.cs)程式碼檔案;
實體工具:
一、介面截圖:
二、SQL語句部分程式碼
----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',但有時候會有系統表混在其中(不知道什麼原因),加上後面一句後就能刪除這些系統表了。
三、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(); } } }
工具下載:
總結:
1.避免編寫重複程式碼,編寫此工具生成實體類快速開發。
2.這類工具在網上已有不少,但是自己可以歸納起來形成工程,放入專案中,不僅自己從中可以學到新的知識也同時提升了自己的總結歸納能力。
3.此工具還未完善,只支援SQLServer資料庫,不過我自己有時間也會完成其他資料庫支援的,有興趣的讀者可以繼續擴充套件支援其他資料庫。
4.如果有不對的或不理解的地方,希望大家可以多多指正,提出問題,才能站在更多使用者角度,編寫了出更便捷實用的工具。