Mysql数据库表转C#模型类

文章介绍了一个用C#编写的代码生成器,该工具能根据已有的PythonFlask数据库模型,自动创建C#的模型代码。主要功能包括连接数据库、读取表结构并生成对应的C#类。代码中包含数据库连接和获取表格C#代码的关键部分。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这里写自定义目录标题

需求

最近准备做个项目,前面使用的Python Flask 当时已经把数据库基本建好了。
懒得做重复工作,重新再用C#写模型,就随手写了个代码生成器,目前还未发现Bug。

功能截图

链接数据库设置
生成的代码,支持多表同时生成
生成的效果
配置信息全部加密

关键代码

        /// <summary>
        /// 链接数据库
        /// </summary>
        private void Connect()
        {
            if(conn != null)
            {
                this.conn.Close();
                this.conn.Dispose();
            }

            string ip = INIFileHelper.IniReadValue("Conn", "IP");
            if (!string.IsNullOrEmpty(ip)) ip = DESEncrypt.Decrypt(ip, keys);

            string port = INIFileHelper.IniReadValue("Conn", "Port");
            if (!string.IsNullOrEmpty(port)) port = DESEncrypt.Decrypt(port, keys);

            string userName = INIFileHelper.IniReadValue("Conn", "UserName");
            if (!string.IsNullOrEmpty(userName)) userName = DESEncrypt.Decrypt(userName, keys);

            string pwd = INIFileHelper.IniReadValue("Conn", "Pwd");
            if (!string.IsNullOrEmpty(pwd)) pwd = DESEncrypt.Decrypt(pwd, keys);

            string dbn = INIFileHelper.IniReadValue("Conn", "DataBaseName");
            if (!string.IsNullOrEmpty(dbn)) Global.DataBaseName = dbn = DESEncrypt.Decrypt(dbn, keys);
            Global.connstr = $"Server={ip};User ID={userName};Password={pwd};port={port};Database={dbn};CharSet=utf8;pooling=true;";

            this.conn = new MySqlConnection(Global.connstr);
            conn.Open();
        }
        /// <summary>
        /// 获取单个表格的C#代码
        /// </summary>
        /// <param name="tableName"></param>
        /// <param name="table_comment"></param>
        /// <returns></returns>
        private string GetCharpCode(string tableName,string table_comment = "")
        {
            string result = $"\t/// <summary>\r\n\t/// {table_comment}\r\n\t/// <summary>\r\n";      //注释行
            result += "\tpublic class " + tableName.Capitalize() + "\r\n\t{\r\n";
            //查询到的数据表结构
            //+----------------+------------------+-----------+---------------+
            //| COLUMN_NAME    | COLUMN_COMMENT   | DATA_TYPE | COLUMN_TYPE   |
            //+----------------+------------------+-----------+---------------+
            //|       id       |       主键       | varchar   |  varchar(100) |
            string sql = $"select COLUMN_NAME, COLUMN_COMMENT,DATA_TYPE,COLUMN_TYPE from information_schema.COLUMNS where table_name = '{tableName}' and table_schema = '{Global.DataBaseName}';";
            if (conn != null && conn.State == ConnectionState.Open)
            {
                try
                {
                    MySqlDataAdapter DataAdapter = new MySqlDataAdapter(sql, conn);
                    DataSet ds = new DataSet();
                    DataAdapter.Fill(ds);
                    DataTable dt = ds.Tables[0];
                    for (int i = 0; i < dt.Rows.Count; i++)
                    {
                        result += "\r\n";
                        result += $"\t\t/// <summary>\r\n\t\t/// {dt.Rows[i][1]}\r\n\t\t/// <summary>\r\n";      //注释行
                        result += "\t\tpublic " + GetTypeByMySQLType(dt.Rows[i][2].ToString()) + " "+ dt.Rows[i][0].ToString() + " { get; set; }\r\n";
                    }
                    result += "\r\n\t}\r\n";

                }
                catch (Exception ex)
                {
                    result += "\r\n\t\t//========查询当前数据库表出现错误!========\r\n";
                    result += "\t\t//错误:"+ex.Message+"\r\n";
                    result += "\r\n\t}\r\n";
                    //MessageBox.Show( "错误:" + ex.Message,this.Text, MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }
            else
            {
                result += "\r\n\t\t//========查询当前数据库表出现连接错误!========\r\n";
                result += "\r\n\t}\r\n";
            }

            return result;
        }

下载

软件下载:
链接:https://pan.baidu.com/s/1q1CnYizZX80mTGY2ky8wCw
提取码:AAAA
需要源码的可以发邮件给我!

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值