前言:数据库
项目实战中不管是业务编码仍是通用编码,总会概括出一些通用的工具类。放入项目中一劳永逸,让兄弟姐妹们避免编写重复代码。因此利用了工做之余的时间,将这些散落在多个项目中精致优雅的工具类,概括起来造成工程,方便后续工做的使用和便捷开发。工具
根据实际需求,编写了此工具。目前只支持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.若是有不对的或不理解的地方,但愿你们能够多多指正,提出问题,才能站在更多用户角度,编写了出更便捷实用的工具。