⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 clstableclasscreater.cs

📁 通过配置数据库连接并选择数据库表,可自动生成数据库表的实体类,并且实体类中包含记录集合,可在类中对各记录集合进行修改后一次性提交保存,支持事务.
💻 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 + -