实例图
http://blog.csdn.net/u011575989/article/details/13109631
通过以上查询表结构
/// <summary>
/// 生成单个表的类文件
/// </summary>
/// <param name="tableName">表名</param>
/// <param name="dt">对应的表结构</param>
/// <returns></returns>
public string CreateTableClass(string tableName, DataTable dt)
{
//如果是系统表,没有数据,则返回空
if (dt.Rows.Count == 0)
{
return "";
}
string tblName = getDXString(tableName);//首字母大写的表名
string output = "";//保存输出信息
output += "using System;";
output += "\r\nusing System.Collections.Generic;";
output += "\r\nusing System.Text;";
output += "\r\n\r\nnamespace " + txtNameSpace.Text;
output += "\r\n{";
output += "\r\n\t[Serializable()]";
output += "\r\n\tpublic class " + tblName;
output += "\r\n\t{";
//
//无参构造函数
output += "\r\n\t\tpublic " + tblName + "(){}";
//有参构造函数
string pars = "";
string parInfo = "";
for (int i = 0; i < dt.Rows.Count; i++)
{
pars += dt.Rows[i]["类型"].ToString() + " " + dt.Rows[i]["字段名"].ToString().ToLower() + ",";
parInfo += "\tthis." + getDXString(dt.Rows[i]["字段名"].ToString()) + "=" + dt.Rows[i]["字段名"].ToString().ToLower() + ";\r\n\t\t";
}
pars = pars.Remove(pars.LastIndexOf(","));
parInfo = parInfo.Remove(parInfo.LastIndexOf("\r\n"));
output += "\r\n\t\tpublic " + getDXString(tableName) + "(" + pars + ")";
output += "\r\n\t\t{";
output += "\r\n\t\t" + parInfo;
output += "\r\n\t\t}";
//
output += "\r\n\t\t#region 属性字段";
for (int i = 0; i < dt.Rows.Count; i++)
{
if (dt.Rows[i]["字段说明"].ToString().Length != 0)
{
output += "\r\n\t\t/// <summary>";
output += "\r\n\t\t/// " + getXXString(dt.Rows[i]["字段说明"].ToString());
output += "\r\n\t\t/// </summary>";
}
output += "\r\n\t\tpublic " + dt.Rows[i]["类型"].ToString() + " " + getDXString(dt.Rows[i]["字段名"].ToString()) + "{set;get;}";
}
output += "\r\n\t\t#endregion";
///
output += "\r\n\t}";
output += "\r\n}";
return output;
}
/// <summary>
/// 首字母大写
/// </summary>
/// <param name="str"></param>
/// <returns></returns>
public static string getDXString(string str)
{
if (str.Length > 0)
{
string s = str.Substring(0, 1);
str = s.ToUpper() + str.Substring(1);
}
return str;
}
/// <summary>
/// 首字母小写
/// </summary>
/// <param name="str"></param>
/// <returns></returns>
public static string getXXString(string str)
{
if (str.Length > 0)
{
string s = str.Substring(0, 1);
str = s.ToLower() + str.Substring(1);
}
return str;
}
/// <summary>
/// 选择存放目录
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnSelectPath_Click(object sender, EventArgs e)
{
FolderBrowserDialog f = new FolderBrowserDialog();
f.ShowDialog();
txtPath.Text = f.SelectedPath;
}
/// <summary>
/// 生成所有类文件
/// </summary>
private void btnCreateAll_Click(object sender, EventArgs e)
{
if (txtNameSpace.Text.Trim().Length == 0)
{
MessageBox.Show("命名空间不允许为空!");
txtNameSpace.Focus();
}
else if (txtPath.Text.Trim().Length == 0)
{
MessageBox.Show("文件保存路径不允许为空!");
btnSelectPath.Focus();
}
else
{
foreach (DataGridViewRow row in dgvTable.Rows)
{
string dbTblName = row.Tag.ToString();//数据库中表名,也是dicTables集合中的关键字
string tblName = row.Cells["tblName"].Value.ToString(); //修改之后的表名
string path = txtPath.Text.Trim() + "\\" + tblName + ".cs";
FileStream fs = new FileStream(path, FileMode.Create);
StreamWriter sw = new StreamWriter(fs);
string info = CreateTableClass(tblName, dicTables[dbTblName]);
sw.WriteLine(info);
sw.Close();
fs.Close();
}
MessageBox.Show("生成成功!");
}
}