.net自动生成数据库表的类
// 获取到所有的用户表.
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自动生成数据库表的类的更多相关文章
- Mybatis总结之如何自动生成数据库表结构
一般情况下,用Mybatis的时候是先设计表结构再进行实体类以及映射文件编写的,特别是用代码生成器的时候. 但有时候不想用代码生成器,也不想定义表结构,那怎么办? 这个时候就会想到Hibernate, ...
- 【工具篇】利用DBExportDoc V1.0 For MySQL自动生成数据库表结构文档
对于DBA或开发来说,如何规范化你的数据库表结构文档是灰常之重要的一件事情.但是当你的库,你的表排山倒海滴多的时候,你就会很头疼了. 推荐一款工具DBExportDoc V1.0 For MySQL( ...
- Intellij IDEA集成mybatis-generator插件自动生成数据库实体操作类
Intellij IDEA集成mybatis-generator插件自动生成数据库实体操作类 转载至:https://blog.csdn.net/fishinhouse/article/details ...
- NetCore使用使用Scaffold-DbContext命令生成数据库表实体类
一.为了模拟项目,本处创建了一个NetCore的Web项目.打算在Models文件夹下生成数据库表的实体类. 二.在程序包管理控制台,输入“Scaffold-DbContext "Serve ...
- EntityFramework Core 2.x (ef core) 在迁移中自动生成数据库表和列说明
在项目开发中有没有用过拼音首字母做列名或者接手这样的项目? 看见xmspsqb(项目审批申请表)这种表名时是否有一种无法抑制的想肛了取名的老兄的冲动? 更坑爹的是这种数据库没有文档(或者文档老旧不堪早 ...
- 利用DBExportDoc V1.0 For MySQL自动生成数据库表结构文档
对于DBA或开发来说,如何规范化你的数据库表结构文档是灰常之重要的一件事情.但是当你的库,你的表排山倒海滴多的时候,你就会很头疼了. 推荐一款工具DBExportDoc V1.0 For MySQL( ...
- EF CodeFirst关于Mysql如何自动生成数据库表
相对于sqlserver数据库,mysql的配置过程相对麻烦一些,我们从0讲起. 1.新建一个控制台应用程序 右键点击引用--管理NuGet程序包,搜索Mysql.Data.Entity并安装,安装完 ...
- oracle数据库自动生成数据库表结构文档(亲测有效)
import java.awt.Color; import java.io.FileOutputStream; import java.sql.Connection; import java.sql. ...
- T4自动生成数据库C#实体类学习(1)
第一个测试的Demo <#@ template language="C#" debug="True" hostspecific="True&qu ...
随机推荐
- java 入门 第二季2
(1). 封装 封装类的时候属性用private,方法getter和setter用public 将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问 ...
- BM算法和Sunday快速字符串匹配算法
BM算法研究了很久了,说实话BM算法的资料还是比较少的,之前找了个资料看了,还是觉得有点生涩难懂,找了篇更好的和算法更好的,总算是把BM算法搞懂了. 1977年,Robert S.Boyer和J St ...
- ATS(App Transport Security)对HTTP协议屏蔽引起的问题
一.问题描述 在学习网络处理的过程,发现代码都没错,运行时会收到如下错误提示: App Transport Security has blocked a cleartext HTTP (http:// ...
- vs2010调试程序出现“Cannot find or open the PDB file”
项目中源程序编写好以后, (一个简单的小程序) #include int main(void) { int age; int day; age = 24; printf("tom is %d ...
- codeforces 591A. Wizards' Duel 解题报告
题目链接:http://codeforces.com/problemset/problem/591/A 题目意思:其实看下面这幅图就知道题意了,就是Harry 和 He-Who-Must-Not-Be ...
- LightOJ1336 Sigma Function(约数和为偶数的个数)
Sigma Function Time Limit:2000MS Memory Limit:32768KB 64bit IO Format:%lld & %llu Submit ...
- IIS配置默认文档
我们在配置IIS的默认文档时是在这里配置的,如下图: 但是,有可能我们的根目录下没有这个文件,而且我们网站运行的时候也不想访问根目录下的这个文件,而是要访问其他文件夹下的某一个文件,比如网站运行的时候 ...
- JavaWeb学习--Servlet认识
Servlet开发 用户在浏览器中输入一个网址并回车,浏览器会向服务器发送一个HTTP请求.服务器端程序接受这个请求,并对请求进行处理,然后发送一个回应.浏览器收到回应,再把回应的内容显示出来.这种请 ...
- CLR via C#(03)- 对象创建和类型转换
一. 创建对象 CLR要求用new操作符创建对象,这个操作符在编译时产生的IL指令为newobj.例如: Student XiaoJing=new Student(“XiaoJing”,”1986”) ...
- 《CLR via C#》读书笔记(6)类型和成员基础
6.1 类型的各种成员 在一个类型中,可以定义0个或者多个以下种类的成员: 常量 常量是在编译时设置其值并且永远不能更改其值的字段.使用常量可以为特殊值提供有意义的名称以代替数字文本,以使代码变得更容 ...