C#程序自动生成 实体类
1.xml文件部分
2.程序类文件部分
using System;
using System.Xml;
namespace WindowsApplication1
{
public class QuickCoder
{
public static string MSSQLServerDataTypeCSharpTypeMap (System.Type _type)
{
string _Result = string.Empty;
switch( _type.ToString() )
{
case "char":
_Result = "string";
break;
case "varchar" :
_Result = "string";
break;
case "nvarchar" :
_Result = "string";
break;
case "text":
_Result = "string";
break;
case "datetime":
_Result = "System.DateTime";
break;
case "int":
_Result = "int";
break;
case "int identity":
_Result = "float";
break;
case "float":
_Result = "float";
break;
case "bit":
_Result = "string";
break;
case "numeric":
_Result = "double";
break;
case "money":
_Result = "double";
break;
}
return _Result;
}
public static void table2CSharp(
System.Data.DataSet rsmd,
String _namespace, String className)
{
System.Text.StringBuilder cs = new System.Text.StringBuilder (),
csFiled = new System.Text.StringBuilder(),
csProperty = new System.Text.StringBuilder();
string line = "/r/n";
//加入命名空间
cs.Append("using System;").Append(line).Append(line);
cs.Append("/*").Append(line);
cs.Append(" *本代码部分为程序自动生成").Append(line);
cs.Append(" * 使用前请检查").Append(line);
cs.Append(" */").Append(line).Append(line);
cs.Append("namespace ").Append(_namespace).Append(" {");
cs.Append(line).Append(line);
//加入类名
cs.Append("///
cs.Append("//实体类").Append(line);
cs.Append("///
cs.Append(" public class ").Append(className).Append(" {");
cs.Append(line).Append(line);
int c = rsmd.Tables[0].Columns.Count;
System.Data.DataColumn[] pKeycolum = rsmd.Tables[0].PrimaryKey;
string type, name,pKey =string.Empty;
System.Object t;
for (int i = 0; i <= c-1; i++)
{
name = rsmd.Tables[0].Columns[i].ColumnName.Replace(' ', '_');
System.Type dbType = rsmd.Tables[0].Columns[i].DataType ;
string allowDBNull ="字段允许为空:"+ rsmd.Tables[0].Columns[i].AllowDBNull.ToString();
string maxLong ="字段长度:"+ rsmd.Tables[0].Columns[i].MaxLength.ToString();
foreach( System.Data.DataColumn colum in pKeycolum)
{
if (name == colum.ColumnName)
{
pKey = "主键";
}
}
t = dbType.ToString();
string summary = string.Empty;
summary = "///"+ name + line
+"///"+ allowDBNull + line
+"///"+ maxLong + line;
type = MSSQLServerDataTypeCSharpTypeMap(dbType);
if (t != null)
{
type = t.ToString();
}
else
{
type = "___" + dbType;
//prt(namespace + "" + className + " " + dbType);
}
//加入私有字段
csFiled.Append(line).Append(line);
csFiled.Append("///
csFiled.Append("///私有字段").Append(line);
csFiled.Append(summary);
csFiled.Append("///
csFiled.Append(" private ").Append(type).Append(" _").Append(name).Append(";").Append(line);
//加入共有方法
csProperty.Append(line).Append(line);
csProperty.Append("///
csProperty.Append("///公有属性").Append(line);
csProperty.Append(summary);
csProperty.Append("///
csProperty.Append(" public ").Append(type).Append(" ").Append(name).Append(line);
csProperty.Append("{").Append(line);
csProperty.Append(" get {").Append(line);
csProperty.Append(" return ").Append(" _").Append(name).Append(";").Append(line);
csProperty.Append("}").Append(line);
csProperty.Append(" set {").Append(line);
csProperty.Append(" _").Append(name).Append(" = value ;").Append(line);
csProperty.Append("}").Append(line);
csProperty.Append("}").Append(line);
}
cs.Append(csFiled).Append(csProperty);
cs.Append(" }").Append(line);
cs.Append("}").Append(line);
System.IO.File.Delete( className + ".cs");
System.IO.StreamWriter sw = System.IO.File.CreateText( className + ".cs");
sw.Write(cs.ToString());
sw.Close();
}
}
public class DataAccess
{
public string GetConnString ()
{
string strPath = @"XMLDataSet.xml";
string _SqlConn = string.Empty;
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load( strPath );
XmlNodeList nodeList=xmlDoc.SelectSingleNode("DATA").ChildNodes;
foreach(XmlNode xn in nodeList)//遍历所有子节点
{
XmlElement xe=(XmlElement)xn;//将子节点类型转换为XmlElement类型
//TODO:
_SqlConn = xe.InnerText;
}
return _SqlConn;
}
public System.Data.DataSet GetTableList()
{
string _SqlConn = string.Empty;
_SqlConn = GetConnString();
System.Data.SqlClient.SqlConnection myConnection;
myConnection = new System.Data.SqlClient.SqlConnection(_SqlConn);
string myQuery = "select name from dbo.sysobjects where type ='U'";
//System.Data.SqlClient.SqlCommand myCommand =new System.Data.SqlClient.SqlCommand(myQuery,myConnection);
myConnection.Open();
System.Data.DataSet myDataSet = new System.Data.DataSet();
try
{
System.Data.SqlClient.SqlDataAdapter myAdapter = new System.Data.SqlClient.SqlDataAdapter(myQuery,myConnection);
myAdapter.Fill(myDataSet);
}
finally
{
// always call Close when done reading.
//myReader.Close();
// always call Close when done reading.
myConnection.Close();
}
return myDataSet;
}
public System.Data.DataSet GetDataSet(string strTableName)
{
string _SqlConn = string.Empty;
_SqlConn = GetConnString();
System.Data.SqlClient.SqlConnection myConnection;
myConnection = new System.Data.SqlClient.SqlConnection(_SqlConn);
string myQuery = "select * from "+strTableName+" where 1>2 ";
myConnection.Open();
System.Data.DataSet myDataSet = new System.Data.DataSet();
try
{
System.Data.SqlClient.SqlDataAdapter myAdapter = new System.Data.SqlClient.SqlDataAdapter(myQuery,myConnection);
myAdapter.Fill(myDataSet);
}
finally
{
myConnection.Close();
}
return myDataSet;
}
}
}
3.窗口部分
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
namespace WindowsApplication1
{
///
/// Form1 的摘要说明。
///
public class Form1 : System.Windows.Forms.Form
{
private System.Windows.Forms.Button button1;
private System.Windows.Forms.ListBox lst_Tables;
///
/// 必需的设计器变量。
///
private System.ComponentModel.Container components = null;
public Form1()
{
//
// Windows 窗体设计器支持所必需的
//
InitializeComponent();
FillList();
}
///
/// 清理所有正在使用的资源。
///
protected override void Dispose( bool disposing )
{
if( disposing )
{
if (components != null)
{
components.Dispose();
}
}
base.Dispose( disposing );
}
#region Windows 窗体设计器生成的代码
///
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
///
private void InitializeComponent()
{
this.button1 = new System.Windows.Forms.Button();
this.lst_Tables = new System.Windows.Forms.ListBox();
this.SuspendLayout();
//
// button1
//
this.button1.Location = new System.Drawing.Point(16, 232);
this.button1.Name = "button1";
this.button1.TabIndex = 0;
this.button1.Text = "生成实体类";
this.button1.Click += new System.EventHandler(this.button1_Click);
//
// lst_Tables
//
this.lst_Tables.HorizontalScrollbar = true;
this.lst_Tables.ItemHeight = 12;
this.lst_Tables.Location = new System.Drawing.Point(0, 0);
this.lst_Tables.Name = "lst_Tables";
this.lst_Tables.SelectionMode = System.Windows.Forms.SelectionMode.MultiSimple;
this.lst_Tables.Size = new System.Drawing.Size(288, 184);
this.lst_Tables.TabIndex = 1;
//
// Form1
//
this.AutoScaleBaseSize = new System.Drawing.Size(6, 14);
this.ClientSize = new System.Drawing.Size(292, 273);
this.Controls.Add(this.lst_Tables);
this.Controls.Add(this.button1);
this.Name = "Form1";
this.Text = "Form1";
this.ResumeLayout(false);
}
#endregion
///
/// 应用程序的主入口点。
///
[STAThread]
static void Main()
{
Application.Run(new Form1());
}
private void button1_Click(object sender, System.EventArgs e)
{
// DataSystemType _DataSystemType = new DataSystemType();
//
// System.Data.DataSet _DS;
// _DS = _DataSystemType.SystemTypeQuery();
//
// QuickCoder.table2CSharp(_DS,"tempNameSpace","tempclass");
System.Windows.Forms.ListBox.SelectedObjectCollection _SelObj =this.lst_Tables.SelectedItems;
int n=_SelObj.Count;
for(int i=0;i
string tableName = ((System.Windows.Forms.ListBox.SelectedObjectCollection)_SelObj)[i].ToString();
MakeFile( tableName );
}
}
private void MakeFile(string TableName)
{
//根据表名生成dataSet
System.Data.DataSet _DS ;
DataAccess _DataAccess = new DataAccess();
_DS = _DataAccess.GetDataSet(TableName);
//生成文件
QuickCoder.table2CSharp(_DS,"tempNameSpace", TableName);
}
private void FillList()
{
DataAccess _DataAccess = new DataAccess();
System.Data.DataSet _DS = _DataAccess.GetTableList();
foreach (System.Data.DataRow dr in _DS.Tables[0].Rows)
{
this.lst_Tables.Items.Add(dr[0].ToString());
}
}
}
}