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学习_代码生成器的更多相关文章

  1. DouNet学习_收发邮件

    一.收发邮件 --->第一步:发邮件首先要有发送者的邮箱地址和登录的密码才能发送 这些都写在APP里  不要写死 --->第二步:发邮件就要有网络,要添加net.Mail命名空间 要发送的 ...

  2. python学习_数据处理编程实例(二)

    在上一节python学习_数据处理编程实例(二)的基础上数据发生了变化,文件中除了学生的成绩外,新增了学生姓名和出生年月的信息,因此将要成变成:分别根据姓名输出每个学生的无重复的前三个最好成绩和出生年 ...

  3. Linux操作系统学习_操作系统是如何工作的

    实验五:Linux操作系统是如何工作的? 学号:SA1****369 操作系统工作的基础:存储程序计算机.堆栈(函数调用堆栈)机制和中断机制 首先要整明白的一个问题是什么是存储程序计算机?其实存储程序 ...

  4. 『TensorFlow』SSD源码学习_其一:论文及开源项目文档介绍

    一.论文介绍 读论文系列:Object Detection ECCV2016 SSD 一句话概括:SSD就是关于类别的多尺度RPN网络 基本思路: 基础网络后接多层feature map 多层feat ...

  5. jQuery源代码学习_工具函数_type

    jquery源代码学习_工具函数_type jquery里面有一个很重要的工具函数,$.type函数用来判断类型,今天写这篇文章,是来回顾type函数的设计思想,深入理解. 首先来看一下最终结果: 上 ...

  6. TypeScript学习_入门向

    TypeScript学习_入门向 1-TypeScript简介 首先官网祭天 ---> https://www.tslang.cn/ TypeScript 是 JavaScript 的一个超集, ...

  7. 《mysql必知必会》学习_第八章_20180730_欢

    第八章学习LIKE操作符,百分百(%)通配符,下划线(_)通配符 P47 select prod_id,prod_name from products where prod_name LIKE 'je ...

  8. labview学习_入门篇(一)

    写在前面的话: 在上大学的时候,实验室的老师推荐用labview工具编写上位机软件,当时不想用labview,感觉不写代码心里不踏实,后来用vb和matalb开发了上位机软件.但现在由于部门的几款工具 ...

  9. 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的简单理解 ...

随机推荐

  1. SQL Agent Job ->> 通过sys.sysprocesses的program_name字段来定位对应的Job

    ;WITH T AS ( SELECT 'SQLAgent - TSQL JobStep (Job 0x'+ ),)),) + ' : Step ' + )) + ')' filter, j.job_ ...

  2. ES6入门之set和map

    Set ES6提供了新的数据结构Set.它类似于数组,但是成员的值都是唯一的,没有重复的值. Set函数可以接受一个数组(或类似数组的对象)作为参数,用来初始化. // 例一 var set = ne ...

  3. linux ps top 命令 VSZ,RSS,TTY,STAT, VIRT,RES,SHR,DATA的含义【转】

    转自:http://blog.csdn.net/zjc156m/article/details/38920321 http://javawind.net/p131 VIRT:virtual memor ...

  4. datetimepicker文件

    很有诚意先放下载地址百度网盘 最近在做angular的项目,找一个合适的 datepicker ,首选bootstrap-datetimepicker,但是项目中没有到bootstrap, 整理处理下 ...

  5. Eclipse插件安装与使用 —— Properties Editor

    一.下载     首先当然是下载插件啦! 下载地址:http://sourceforge.jp/projects/propedit/downloads/40156/jp.gr.java_conf.us ...

  6. YTU 2611: A代码完善--向量的运算

    2611: A代码完善--向量的运算 时间限制: 1 Sec  内存限制: 128 MB 提交: 256  解决: 168 题目描述 注:本题只需要提交填写部分的代码,请按照C++方式提交. 对于二维 ...

  7. poj 1742 Coins (多重背包)

    http://poj.org/problem?id=1742 n个硬币,面值分别是A1...An,对应的数量分别是C1....Cn.用这些硬币组合起来能得到多少种面值不超过m的方案. 多重背包,不过这 ...

  8. hdu4003Find Metal Mineral(树形DP)

    4003 思维啊 dp[i][j]表示当前I节点停留了j个机器人 那么它与父亲的关系就有了 那条边就走了j遍 dp[i][j] = min(dp[i][j],dp[child][g]+dp[i][j- ...

  9. hdu 5091(线段树+扫描线)

    上海邀请赛的一道题目,看比赛时很多队伍水过去了,当时还想了好久却没有发现这题有什么水题的性质,原来是道成题. 最近学习了下线段树扫描线才发现确实是挺水的一道题. hdu5091 #include &l ...

  10. mac下编译optool方法

    参考地址:http://www.mopsled.com/2016/build-optool-osx/ 1.git clone https://github.com/alexzielenski/opto ...