需求
最近准备做个项目,前面使用的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
需要源码的可以发邮件给我!