// 获取到所有的用户表.
DataTable userTableName = GetTable( "select name as tablename from sysobjects where xtype = 'U'" );

//根据表名获取所有字段和字段类型
            DataTable myTable = 
                GetTable( 
                    "select syscolumns.name,systypes.name as type from syscolumns  " + 
                    " INNER   JOIN  sysobjects  ON   syscolumns.id  =  sysobjects.id " + 
                    "INNER   JOIN   systypes   ON   syscolumns.xtype   =   systypes.xtype " + 
                    " WHERE   (sysobjects.name   =   '" + tableName + "')   AND   (systypes.name   <>   'sysname') ");

//创建一个新的表.需要生成的数据
//字段1:修饰符 - 一般为 private 
//字段2:修饰符2 - 一般我不写.可以写 statice
//字段3:SQL字段的类型 - 在生成.cs文件前会转换成c#类型
//字段4:生成属性名称 - 与表内字段名一样
            DataTableNew.Columns.Add("xiushifu1", typeof (string)); 
            DataTableNew.Columns.Add("xiushifu2", typeof (string)); 
            DataTableNew.Columns.Add("type", typeof (string)); 
            DataTableNew.Columns.Add("name", typeof (string));

// 进行类型转换
//为生成实体需要的数据添加记录保存
            for (int i = 0; i < myTable.Rows.Count; i++) 
            { 
                string typeName = ChangeToCSharpType(myTable.Rows["type"].ToString());

DataTableNew.Rows.Add(new object[] {"private", "", typeName, myTable.Rows["name"]}); 
            }

//进行类型转换函数
        protected static string ChangeToCSharpType( string type ) 
        { 
            string reval;

switch( type.ToLower() ) 
            { 
                case "int": 
                    reval = "Int32"; 
                    break; 
                case "text": 
                    reval = "String"; 
                    break; 
                case "bigint": 
                    reval = "Int64"; 
                    break; 
                case "binary": 
                    reval = "System.Byte[]"; 
                    break; 
                case "bit": 
                    reval = "Boolean"; 
                    break; 
                case "char": 
                    reval = "String"; 
                    break; 
                case "datetime": 
                    reval = "System.DateTime"; 
                    break; 
                case "decimal": 
                    reval = "System.Decimal"; 
                    break; 
                case "float": 
                    reval = "System.Double"; 
                    break; 
                case "image": 
                    reval = "System.Byte[]"; 
                    break; 
                case "money": 
                    reval = "System.Decimal"; 
                    break; 
                case "nchar": 
                    reval = "String"; 
                    break; 
                case "ntext": 
                    reval = "String"; 
                    break; 
                case "numeric": 
                    reval = "System.Decimal"; 
                    break; 
                case "nvarchar": 
                    reval = "String"; 
                    break; 
                case "real": 
                    reval = "System.Single"; 
                    break; 
                case "smalldatetime": 
                    reval = "System.DateTime"; 
                    break; 
                case "smallint": 
                    reval = "Int16"; 
                    break; 
                case "smallmoney": 
                    reval = "System.Decimal"; 
                    break; 
                case "timestamp": 
                    reval = "System.DateTime"; 
                    break; 
                case "tinyint": 
                    reval = "System.Byte"; 
                    break; 
                case "uniqueidentifier": 
                    reval = "System.Guid"; 
                    break; 
                case "varbinary": 
                    reval = "System.Byte[]"; 
                    break; 
                case "varchar": 
                    reval = "String"; 
                    break; 
                case "Variant": 
                    reval = "Object"; 
                    break; 
                default: 
                    reval = "String"; 
                    break; 
            } 
            return reval; 
        }

//创建文本流并设置编码
TextWriter writer = new StreamWriter( 
                      new BufferedStream( 
                      new FileStream( fileDesc , FileMode.Create , FileAccess.Write ) ) , System.Text.Encoding.GetEncoding( "gb2312" ) )

// 写入命名空间和类名
                writer.WriteLine( "using System;" ); 
                writer.WriteLine();

writer.WriteLine( "namespace " + nameSpace ); 
                writer.WriteLine( "{" ); 
                writer.WriteLine( "\tpublic class " + className ); 
                writer.WriteLine( "\t{" );

//写入所有私有变量
                for( int i = 0 ; i < table.Rows.Count ; i++ ) 
                { 
                    object [ ] row = table.Rows [ i ].ItemArray; 
                    writer.Write( "\t\t" ); 
                    for( int j = 0 ; j < row.Length ; j++ ) 
                    { 
                        writer.Write( row [ j ].Equals( "无" ) ? "" : row [ j ] + ( j == row.Length - 1 ? "" : " " ) ); 
                    } 
                    writer.Write( ";" ); 
                    writer.WriteLine(); 
                }

//写入所有属性
                for( int i = 0 ; i < table.Rows.Count ; i++ ) 
                { 
                    writer.Write( "\t\t" ); 
                    writer.Write( "public " ); 
                    object [ ] row = table.Rows [ i ].ItemArray; 
                    for( int j = 1 ; j < row.Length - 1 ; j++ ) 
                    { 
                        if( row [ j ].Equals( "static" ) ) 
                        { 
                            writer.Write( "static " ); 
                            continue; 
                        } 
                        writer.Write( row [ j ].Equals( "无" ) ? "" : row [ j ] + " " ); 
                    } 
                    string attribName = row [ row.Length - 1 ].ToString(); 
                    writer.Write( attribName.Substring( 0 , 1 ).ToUpper() + attribName.Substring( 1 , attribName.Length - 1 ) ); 
                    writer.WriteLine(); 
                    writer.WriteLine( "\t\t{" ); 
                    writer.WriteLine( "\t\t\tget" ); 
                    writer.WriteLine( "\t\t\t{" ); 
                    if( row [ 1 ].Equals( "static" ) ) 
                    { 
                        writer.WriteLine( "\t\t\t\treturn " + attribName + ";" ); 
                    } 
                    else 
                    { 
                        writer.WriteLine( "\t\t\t\treturn this." + attribName + ";" ); 
                    } 
                    writer.WriteLine( "\t\t\t}" ); 
                    writer.WriteLine( "\t\t\tset" ); 
                    writer.WriteLine( "\t\t\t{" ); 
                    if( row [ 1 ].Equals( "static" ) ) 
                    { 
                        writer.WriteLine( "\t\t\t\t" + attribName + " = value;" ); 
                    } 
                    else 
                    { 
                        writer.WriteLine( "\t\t\t\tthis." + attribName + "= value;" ); 
                    } 
                    writer.WriteLine( "\t\t\t}" ); 
                    writer.WriteLine( "\t\t}" ); 
                } 
                writer.WriteLine( "\t}" ); 
                writer.WriteLine( "}" );

.net自动生成数据库表的类的更多相关文章

  1. Mybatis总结之如何自动生成数据库表结构

    一般情况下,用Mybatis的时候是先设计表结构再进行实体类以及映射文件编写的,特别是用代码生成器的时候. 但有时候不想用代码生成器,也不想定义表结构,那怎么办? 这个时候就会想到Hibernate, ...

  2. 【工具篇】利用DBExportDoc V1.0 For MySQL自动生成数据库表结构文档

    对于DBA或开发来说,如何规范化你的数据库表结构文档是灰常之重要的一件事情.但是当你的库,你的表排山倒海滴多的时候,你就会很头疼了. 推荐一款工具DBExportDoc V1.0 For MySQL( ...

  3. Intellij IDEA集成mybatis-generator插件自动生成数据库实体操作类

    Intellij IDEA集成mybatis-generator插件自动生成数据库实体操作类 转载至:https://blog.csdn.net/fishinhouse/article/details ...

  4. NetCore使用使用Scaffold-DbContext命令生成数据库表实体类

    一.为了模拟项目,本处创建了一个NetCore的Web项目.打算在Models文件夹下生成数据库表的实体类. 二.在程序包管理控制台,输入“Scaffold-DbContext "Serve ...

  5. EntityFramework Core 2.x (ef core) 在迁移中自动生成数据库表和列说明

    在项目开发中有没有用过拼音首字母做列名或者接手这样的项目? 看见xmspsqb(项目审批申请表)这种表名时是否有一种无法抑制的想肛了取名的老兄的冲动? 更坑爹的是这种数据库没有文档(或者文档老旧不堪早 ...

  6. 利用DBExportDoc V1.0 For MySQL自动生成数据库表结构文档

    对于DBA或开发来说,如何规范化你的数据库表结构文档是灰常之重要的一件事情.但是当你的库,你的表排山倒海滴多的时候,你就会很头疼了. 推荐一款工具DBExportDoc V1.0 For MySQL( ...

  7. EF CodeFirst关于Mysql如何自动生成数据库表

    相对于sqlserver数据库,mysql的配置过程相对麻烦一些,我们从0讲起. 1.新建一个控制台应用程序 右键点击引用--管理NuGet程序包,搜索Mysql.Data.Entity并安装,安装完 ...

  8. oracle数据库自动生成数据库表结构文档(亲测有效)

    import java.awt.Color; import java.io.FileOutputStream; import java.sql.Connection; import java.sql. ...

  9. T4自动生成数据库C#实体类学习(1)

    第一个测试的Demo <#@ template language="C#" debug="True" hostspecific="True&qu ...

随机推荐

  1. [转]Android 学习资料分享(2015 版)

    转 Android 学习资料分享(2015 版) 原文地址:http://www.jianshu.com/p/874ff12a4c01 目录[-] 我是如何自学Android,资料分享(2015 版) ...

  2. syslog-ng 学习心得与配置说明

    配置说明syslog-ng的主配置文件存放在:/etc/syslog-ng/syslog-ng.conf 一.基础 系统自带版本: 引用 # rpm -qa|grep syslog-ng syslog ...

  3. Enum:Face The Right Way(POJ 3276)

    面朝大海,春暖花开 题目大意:农夫有一群牛,牛排成了一排,现在需要把这些牛都面向正确的方向,农夫买了一个机器,一次可以处理k只牛,现在问你怎么处理这些牛才可以使操作数最小? 这道题很有意思,其实这道题 ...

  4. tomcat URL乱码问题

    用get传参时,显示乱码 在tomcat里的server.xml中添加一下即可. <Connector port="8080" protocol="HTTP/1.1 ...

  5. IOS - 消息推送原理和实现

    一.消息推送原理: 在实现消息推送之前先提及几个于推送相关概念,如下图1-1: 1.Provider:就是为指定IOS设备应用程序提供Push的服务器,(如果IOS设备的应用程序是客户端的话,那么Pr ...

  6. [Android Pro] 网络流量安全测试工具Nogotofail

    reference to : http://www.freebuf.com/tools/50324.html 从严重的HeartBleed漏洞到苹果的gotofail 漏洞,再到最近的SSL v3 P ...

  7. ios layer 动画-(transform.rotation篇)

    x轴旋转: CABasicAnimation *theAnimation; theAnimation=[CABasicAnimation animationWithKeyPath:@"tra ...

  8. 比较 http连接 vs socket连接

    http连接 :短连接,客户端,服务器三次握手建立连接,服务器响应返回信息,连接关闭,一次性的socket连接:长连接,客户端,服务器三次握手建立连接不中断(通过ip地址端口号定位进程)及时通讯,客户 ...

  9. Asp.net窄屏页面 手机端新闻列表

    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="SearchNotice.a ...

  10. 【JAVA常用类演示】

     一.java.lang.System类. public final class Systemextends Object 该类包含一些有用的类字段和方法.它不能被实例化. 在 System 类提供的 ...