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的简单理解 ...
随机推荐
- 【USACO】【Section1.1】Greedy Gift Givers
小白题,也没啥好说的.关键我的算法感觉特别菜的一点是每次要遍历数组从人名找对应的编号,这个效率就很低了.看了ANALYZE里面也是这样的.不过它比我好的一点是我多余设置了initial_money变量 ...
- Linux之守护进程
一.守护进程概述 在linux或者unix操作系统中在系统的引导的时候会开启很多服务,这些服务就叫做守护进 程.为了增加灵活性,root可以选择系统开启的模式,这些模式叫做运行级别,每一种运行级别以一 ...
- ArcGIS Engine中的8种数据访问
数据是GIS的基础, 访问数据也是进行任何复杂的空间分析及空间可视化表达的前提.ArcGIS支持的数据格式比较丰富,对不同的数据格式支持的程度也有很大差异.本文主要介绍一下以下八种数据格式在ArcGI ...
- Python 时间戳与时间字符串互相转
#设a为字符串 import time a = "2011-09-28 10:00:00" #中间过程,一般都需要将字符串转化为时间数组 time.strptime(a,'%Y-% ...
- SPOJ 1739 Yet Another Equation(Pell方程)
题目链接:http://www.spoj.com/problems/EQU2/ 题意:给出方程x^2-n*y^2=1的最小整数解. 思路:参见金斌大牛的论文<欧几里得算法的应用>. imp ...
- BroadcastService的测试用例
程序运行起来之后,需要用多个telnet客户端来进行测试 连接的命令为conn deviceNumber 广播命令为broa message 需要注意的是:示例代码有bug, broadcastDic ...
- iOS设备升级iOS7
引自:http://lifehacker.com/how-to-upgrade-to-ios-7-right-now-1288208215 Although iOS 7 won't see an of ...
- 嵌入式linux内核是什么?
linux内核是一种可以被内核动态加载(insmode)和卸载(rmmod)的可执行二进制代码 最简单的内核 #include <linux/module.h> #include < ...
- Android中的Drawable资源
在Android应用中,常常会用到Drawable资源,比如图片资源等,在Android开发中我们是用Drawable类来Drawable类型资源的. Drawable资源一般存储在应用程序目录的\r ...
- 编译安装apache+php(加常见问题解决)
[编译apache]./configure --prefix=/usr/local/lamp/httpd -with-apr=/usr/local/apr -with-apr-util=/usr/lo ...