📄 clstableclasscreater.cs
字号:
using System;
using System.IO;
using System.Data;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace TableClassCreater
{
class clsTableClassCreater
{
private StringBuilder mstbCreater = new StringBuilder();
private StringBuilder mstbProperty = new StringBuilder();
private StringBuilder mstbPrivate = new StringBuilder();
private StringBuilder mstbInit = new StringBuilder();
private StringBuilder mstbUpdate = new StringBuilder();
private StringBuilder mstbInitBlank = new StringBuilder();
private string mstrType = "";
private string mstrVarHead = "";
private string mstrKey = "";
private string mstrTable = "";
private string mstrNameSpace = "";
private string mstrSavePath = "";
private string mstrValName = "";
private string mstrVal = "";
private string mstrColName = "";
public void CreateTableClass(string Table, string KeyCol, string NameSpace,string SavePath, DataTable FieldsInfo)
{
mstrKey = KeyCol;
mstrTable = Table;
mstrSavePath = SavePath;
mstrNameSpace = NameSpace;
ClearStringBuilder();
CreateUsingSegment();
CreateClassHeadSegment();
CreateFunctionHead();
foreach (DataRow rowField in FieldsInfo.Rows)
{
CheckFieldType(rowField);
CreateProperty();
CreatePrivate();
CreateInit();
CreateUpdate();
}
CreateOtherEndWork();
CombineSegments();
CreateClassFile();
}
private void ClearStringBuilder()
{
mstbCreater.Remove(0, mstbCreater.Length);
mstbProperty.Remove(0, mstbProperty.Length);
mstbPrivate.Remove(0, mstbPrivate.Length);
mstbInit.Remove(0, mstbInit.Length);
mstbInitBlank.Remove(0, mstbInitBlank.Length);
mstbUpdate.Remove(0, mstbUpdate.Length);
}
private void CheckFieldType(DataRow rowField)
{
switch (rowField["Data_Type"].ToString())
{
case "datetime":
{
mstrType = "DateTime";
mstrVarHead = "mdat";
mstrVal = "DateTime.MinValue";
break;
}
case "image":
{
mstrType = "byte[]";
mstrVarHead = "mbyt";
mstrVal = "null";
break;
}
case "int":
{
mstrType = "int";
mstrVarHead = "mint";
mstrVal = "0";
break;
}
case "real":
{
mstrType = "Single";
mstrVarHead = "msgl";
mstrVal = "0.0F";
break;
}
case "float":
{
mstrType = "double";
mstrVarHead = "mdbl";
mstrVal = "0.0";
break;
}
case "nvarchar":
{
mstrType = "string";
mstrVarHead = "mstr";
mstrVal = "\"\"";
break;
}
case "varchar":
{
mstrType = "string";
mstrVarHead = "mstr";
mstrVal = "\"\"";
break;
}
case "char":
{
mstrType = "string";
mstrVarHead = "mstr";
mstrVal = "\"\"";
break;
}
}
mstrColName = rowField["Column_Name"].ToString();
mstrValName = mstrVarHead + mstrColName;
mstbInitBlank.AppendLine(" " + mstrValName + " = " + mstrVal + ";");
}
private void CreateUsingSegment()
{
mstbCreater.AppendLine("using System;");
mstbCreater.AppendLine("using System.Data;");
mstbCreater.AppendLine("using System.Collections.Generic;");
mstbCreater.AppendLine("using System.Text;");
mstbCreater.AppendLine();
}
private void CreateClassHeadSegment()
{
mstbCreater.AppendLine("namespace " + mstrNameSpace);
mstbCreater.AppendLine("{");
mstbCreater.AppendLine(" public class cls" + mstrTable + " : clsTableBase");
mstbCreater.AppendLine(" {");
mstbCreater.AppendLine(" public clsTB_GongYuanZongGui()");
mstbCreater.AppendLine(" {");
mstbCreater.AppendLine();
mstbCreater.AppendLine(" }");
mstbCreater.AppendLine();
mstbCreater.AppendLine(" protected override void SetTableAndKey()");
mstbCreater.AppendLine(" {");
mstbCreater.AppendLine(" mstrTable = \"" + mstrTable + "\";");
mstbCreater.AppendLine(" mstrKeys = \"" + mstrKey + "\";");
mstbCreater.AppendLine(" }");
mstbCreater.AppendLine();
}
private void CreateProperty()
{
mstbProperty.AppendLine(" public " + mstrType + " " + mstrColName);
mstbProperty.AppendLine(" {");
if (mstrColName.ToUpper() != mstrKey.ToUpper())
{
mstbProperty.AppendLine(" get { return " + mstrValName + "; }");
}
mstbProperty.AppendLine(" set { " + mstrValName + " = value; }");
mstbProperty.AppendLine(" }");
mstbProperty.AppendLine();
}
private void CreatePrivate()
{
mstbPrivate.AppendLine(" private " + mstrType + " " + mstrValName + ";");
mstbPrivate.AppendLine();
}
private void CreateFunctionHead()
{
mstbInitBlank.AppendLine(" protected override void InitProperty()");
mstbInitBlank.AppendLine(" {");
mstbInitBlank.AppendLine(" if (mdtbData.Rows.Count == 0)");
mstbInitBlank.AppendLine(" {");
mstbUpdate.AppendLine(" protected override void UpdateToTable()");
mstbUpdate.AppendLine(" {");
mstbUpdate.AppendLine(" if (CurPos == -1)");
mstbUpdate.AppendLine(" {");
mstbUpdate.AppendLine(" return;");
mstbUpdate.AppendLine(" }");
mstbUpdate.AppendLine();
}
private void CreateOtherEndWork()
{
mstbInitBlank.AppendLine(" return;");
mstbInitBlank.AppendLine(" }");
mstbInitBlank.AppendLine();
mstbInit.AppendLine(" }");
mstbUpdate.AppendLine(" mdtbData.AcceptChanges();");
mstbUpdate.AppendLine(" }");
mstbUpdate.AppendLine(" }");
mstbUpdate.AppendLine("}");
}
private void CreateInit()
{
mstbInit.AppendLine(" if (mdtbData.Rows[CurPos][\"" + mstrColName + "\"] != DBNull.Value)");
mstbInit.AppendLine(" {");
mstbInit.AppendLine(" " + mstrValName + " = (" + mstrType + ")mdtbData.Rows[CurPos][\"" + mstrColName + "\"];");
mstbInit.AppendLine(" }");
mstbInit.AppendLine(" else");
mstbInit.AppendLine(" {");
mstbInit.AppendLine(" " + mstrValName + " = " + mstrVal + ";");
mstbInit.AppendLine(" }");
mstbInit.AppendLine();
}
private void CreateUpdate()
{
mstbUpdate.AppendLine(" mdtbData.Rows[CurPos][\"" + mstrColName + "\"] = " + mstrValName + ";");
}
private void CreateClassFile()
{
string strFile = "cls" + mstrTable + ".cs";
strFile = Path.Combine(mstrSavePath, strFile);
StreamWriter swtWrite = new StreamWriter(strFile,true, Encoding.GetEncoding("gb2312"),mstbCreater.ToString().Length);
swtWrite.Write(mstbCreater.ToString());
swtWrite.Close();
}
private void CombineSegments()
{
mstbCreater.Append(mstbPrivate.ToString());
mstbCreater.AppendLine();
mstbCreater.Append(mstbProperty.ToString());
mstbCreater.AppendLine();
mstbCreater.Append(mstbInitBlank.ToString());
mstbCreater.AppendLine();
mstbCreater.Append(mstbInit.ToString());
mstbCreater.AppendLine();
mstbCreater.Append(mstbUpdate.ToString());
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -