DouNet学习_代码生成器
string conn = "Data Source={0};Initial Catalog={1};User Id={2};Password={3}";
//点击链接
private void btnLink_Click(object sender, EventArgs e)
{
SqlHelper.connstr =
string.Format(conn, txtServer.Text.Trim(), "master", txtUserName.Text.Trim()
, txtPWD.Text.Trim());
cboDatabase.DisplayMember = "name";
cboDatabase.DataSource =
SqlHelper.ExecuteDataTable("select name from SYS.databases ", CommandType.Text);
}
//当选择数据库的索引发生改变时
private void cboDatabase_SelectedIndexChanged(object sender, EventArgs e)
{
treeView1.Nodes.Clear();
string databasename = cboDatabase.Text;
SqlHelper.connstr =
string.Format(conn, txtServer.Text.Trim(), databasename, txtUserName.Text.Trim(),
txtPWD.Text.Trim());
TreeNode partent = new TreeNode();
partent.Text = databasename;
treeView1.Nodes.Add(partent);
TreeNode sheet = new TreeNode();
sheet.Text = "数据表";
partent.Nodes.Add(sheet);
DataTable dtsheet =
SqlHelper.ExecuteDataTable("select TABLE_NAME ,TABLE_TYPE
from INFORMATION_SCHEMA.TABLES where TABLE_TYPE ='BASE TABLE'", CommandType.Text);
AddTreeNode(dtsheet, sheet);
TreeNode view = new TreeNode();
view.Text = "视图";
partent.Nodes.Add(view);
DataTable dtview =
SqlHelper.ExecuteDataTable("select TABLE_NAME ,TABLE_TYPE
from INFORMATION_SCHEMA.TABLES where TABLE_TYPE ='VIEW'", CommandType.Text);
AddTreeNode(dtview, view);
partent.ExpandAll();
ChangeText();
}
void ChangeText()
{
txtBll.Text = cboDatabase.Text + "Bll";
txtDAL.Text = cboDatabase.Text + "DAL";
txtModel.Text = cboDatabase.Text + "Model";
txtDatabase.Text = "DBHelper";
}
//把得到的每个数据表或视图加载到节点上
private void AddTreeNode(DataTable dt, TreeNode tn)
{
foreach (DataRow item in dt.Rows)
{
TreeNode node = new TreeNode();
node.Text = item["TABLE_NAME"].ToString();
tn.Nodes.Add(node);
}
}
private void Form1_Load(object sender, EventArgs e)
{
rboModel.Checked = true;
}
//点击代码生成
private void btnRes_Click(object sender, EventArgs e)
{
tabControl1.SelectedIndex = ;
if (rboModel.Checked)
{
//生成实体类
)
{
txtCode .Text = CreateModel();
}
else
{
MessageBox.Show("请选择数据表或视图");
}
}
if (rboDAL.Checked)
{
//生成数据访问层类
}
if (rboBll.Checked)
{
//生成业务逻辑层类
}
}
//生成Model类
string CreateModel()
{
string sheetname = treeView1.SelectedNode.Text;
StringBuilder sb = new StringBuilder();
DataTable dt =
SqlHelper.ExecuteDataTable("select COLUMN_NAME ,DATA_TYPE
from INFORMATION_SCHEMA.COLUMNS where TABLE_NAME ='" + sheetname + "'", CommandType.Text);
sb.AppendLine("using System;");
sb.AppendLine("namespace " + ToPascal(txtModel.Text) + "");
sb.AppendLine("{");
sb.AppendLine("\tpublic class " + ToPascal(sheetname) + "");
sb.AppendLine("\t{");
foreach (DataRow item in dt.Rows)
{
string columnname = item["COLUMN_NAME"].ToString();
string type = ChangeType(item["DATA_TYPE"].ToString());
sb.AppendLine("\t\tprivate " + type + " " + ToCamel(columnname) + "");
sb.AppendLine("\t\tpublic " + type + " " + ToPascal(columnname) + "");
sb.AppendLine("\t\t\tget{return " + ToCamel(columnname) + ";}");
sb.AppendLine("\t\t\tset{" + ToCamel(columnname) + "=value;}");
}
sb.AppendLine("\t}");
sb.AppendLine("}");
return sb.ToString();
}
//判断数据类型
string ChangeType(string str)
{
string res = "string";
switch (str)
{
case "int": res = "int";
break;
case "datatime": res = "DataTime";
break;
case "bit": res = "bool";
break;
default:
break;
}
return res;
}
//把一个字符串的首字母转换成小写
string ToCamel(string str)
{
, ).ToLower() + str.Substring();
}
//把一个字符串的首字母转换成小写
string ToPascal(string str)
{
, ).ToUpper() + str.Substring();
}
DouNet学习_代码生成器的更多相关文章
- DouNet学习_收发邮件
一.收发邮件 --->第一步:发邮件首先要有发送者的邮箱地址和登录的密码才能发送 这些都写在APP里 不要写死 --->第二步:发邮件就要有网络,要添加net.Mail命名空间 要发送的 ...
- python学习_数据处理编程实例(二)
在上一节python学习_数据处理编程实例(二)的基础上数据发生了变化,文件中除了学生的成绩外,新增了学生姓名和出生年月的信息,因此将要成变成:分别根据姓名输出每个学生的无重复的前三个最好成绩和出生年 ...
- Linux操作系统学习_操作系统是如何工作的
实验五:Linux操作系统是如何工作的? 学号:SA1****369 操作系统工作的基础:存储程序计算机.堆栈(函数调用堆栈)机制和中断机制 首先要整明白的一个问题是什么是存储程序计算机?其实存储程序 ...
- 『TensorFlow』SSD源码学习_其一:论文及开源项目文档介绍
一.论文介绍 读论文系列:Object Detection ECCV2016 SSD 一句话概括:SSD就是关于类别的多尺度RPN网络 基本思路: 基础网络后接多层feature map 多层feat ...
- jQuery源代码学习_工具函数_type
jquery源代码学习_工具函数_type jquery里面有一个很重要的工具函数,$.type函数用来判断类型,今天写这篇文章,是来回顾type函数的设计思想,深入理解. 首先来看一下最终结果: 上 ...
- TypeScript学习_入门向
TypeScript学习_入门向 1-TypeScript简介 首先官网祭天 ---> https://www.tslang.cn/ TypeScript 是 JavaScript 的一个超集, ...
- 《mysql必知必会》学习_第八章_20180730_欢
第八章学习LIKE操作符,百分百(%)通配符,下划线(_)通配符 P47 select prod_id,prod_name from products where prod_name LIKE 'je ...
- labview学习_入门篇(一)
写在前面的话: 在上大学的时候,实验室的老师推荐用labview工具编写上位机软件,当时不想用labview,感觉不写代码心里不踏实,后来用vb和matalb开发了上位机软件.但现在由于部门的几款工具 ...
- Deep Learning 17:DBN的学习_读论文“A fast learning algorithm for deep belief nets”的总结
1.论文“A fast learning algorithm for deep belief nets”的“explaining away”现象的解释: 见:Explaining Away的简单理解 ...
随机推荐
- 整合Struts2+SiteMesh+Spring+MyFaces(JSF)+Freemarker的时候启动服务器报错ClassNotFoundException: org.apache.struts2.sitemesh.FreeMarkerPageFilter
我一琢磨,难道freemarker与struts2的整合也需要添加一个struts2-freemarker-plugin的jar包? 后来找了半天,确认不需要这个. 然后我就上网搜,这个FreeMar ...
- 【转】HashMap的工作原理
很好的文章,推荐Java的一个好网站:ImportNew HashMap的工作原理是近年来常见的Java面试题.几乎每个Java程序员都知道HashMap,都知道哪里要用HashMap,知道Hasht ...
- flex 4 写皮肤
皮肤容器:s:SparkSkin 主机组件: [HostComponent("spark.components.Panel")] 绘制: <s:Group left=&qu ...
- Newtonsoft.Json序列化和反序列之javascriptConvert.SerializeObject,DeserializeObject,JsonWriter,JsonReader
这里下载:http://www.newtonsoft.com/products/json/安装: 1.解压下载文件,得到Newtonsoft.Json.dll 2.在项目中添加引用.. jav ...
- zoj 3329 One Person Game (有环 的 概率dp)
题目链接 这个题看的别人的思路,自己根本想不出来这种设方程的思路. 题意: 有三个骰子,分别有k1,k2,k3个面. 每次掷骰子,如果三个面分别为a,b,c则分数置0,否则加上三个骰子的分数之和. 当 ...
- android利用数字证书对程序签名
签名的必要性 1. 防止你已安装的应用被恶意的第三方覆盖或替换掉. 2. 开发者的身份标识,签名可以防止抵赖等事件的发生. 开发Android的人这么多,完全有可能大家都把类名,包名起成了一个同 ...
- android 开发如何做内存优化
不少人认为JAVA程序,因为有垃圾回收机制,应该没有内存泄露.其实如果我 们一个程序中,已经不再使用某个对象,但是因为仍然有引用指向它,垃圾回收器就无法回收它,当然该对象占用的内存就无法被使用,这就造 ...
- 常见SQLException异常
ORA-00904: invalid column name 无效列名 ORA-00942: table or view does not exist 表或者视图不存在 ORA-01400: c ...
- django - from django.db.models import F - class F
F() 的执行不经过 python解释器,不经过本机内存,是生成 SQL语句的执行. # Tintin filed a news story! reporter = Reporters.objects ...
- python练习程序(c100经典例21)
题目: 猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个第二天早上又将剩下的桃子吃掉一半,又多吃了一个.以后每天早上都吃了前一天剩下的一半零一个.到第10天早上想再吃时,见只 ...