建造_船坞 发表于 2012-12-10 13:52:22

黑马程序员------(1).net c# 一步一步自己写三层代码生成器(主界面及连接数据库界面)

黑马程序员------(1).net c# 一步一步自己写三层代码生成器(主界面及连接数据库界面)

<div id="cnblogs_post_body">
自己动手写代码生成器(主界面及连接sql数据库读取数据库和数据库中的表)

(1)打开visual studio 建立winfrom项目,首先建立主界面如下图
http://pic002.cnblogs.com/images/2012/401333/2012052114414461.jpg
目前用到了 两个个控件:一个上方的"连接服务器"button按钮(点击时弹出连接sql服务器对话框),一个treeview控件(显示从sql服务器中读取到的数据库及数据库中的表)
(2)建立连接服务器界面 。如下图:
http://pic002.cnblogs.com/images/2012/401333/2012052114481257.jpg
服务器地址:combox 有两个item 一个是.一个是127.0.0.1代表连接本机的sql服务器.
身份验证:有两个选项:sql身份验证和windows身份验证。当选择sql身份验证时将下面的用户名和密码textbox 设置为可用
代码如下 在 身份验证combxo的SelectedIndexChanged事件中写如下代码:
            if (cmbconType.SelectedItem.ToString() != "SQL SERVER身份验证")
            {
                label3.Enabled = false;
                label4.Enabled = false;
                txtpwd.Enabled = false;
                txtusername.Enabled = false;
            }
            else
            {
                label3.Enabled = true;
                label4.Enabled = true;
                txtpwd.Enabled = true;
                txtusername.Enabled = true;
            }
最下面的 显示数据库的combox默认是不可用的enabled=false;而且显示服务器地址的combox默认选中.也就是本机。在窗体的load中写如下代码:
      private void conserver_Load(object sender, EventArgs e)
      {
    
            label5.Enabled = false;
            cmbdatabase.Enabled =false; //显示数据库的combox在窗体载入时设置为不可用。因为还没有连接服务器读取数据库。
            cmbconType.SelectedIndex = 1;//默认选中.
      }
(3)接下来 在从服务器中读取数据库及表的信息,这里要用到 这么几个sql语句:
获得一台服务器上的所有 数据库 select * from sys.databases
select * from INFORMATION_SCHEMA.COLUMNS 获得数据库所有列
select * from INFORMATION_SCHEMA.TABLES    获得数据库所有表
在连接测试按钮的click事件中写如下代码:
<div class="cnblogs_code">            string server = cboserverAdress.Text;//获得输入的服务器地址            string user;            string pwd;            if (cmbconType.SelectedItem.ToString() == "SQL SERVER身份验证")            {                user = txtusername.Text;//如果是使用sql身份验证则获取输入的用户名和密码                pwd = txtpwd.Text;                content = "server=" + server + ";" + "database=master;" + "uid=" + user + ";" + "pwd=" + pwd;//拼接连接字符串            }            else            {                content = "server=" + server + ";" + "database=master;" + "integrated security=true";            }            try            {                DataTable t = new System.Data.DataTable();                using (SqlConnection con = new SqlConnection(content))                {                  con.Open();                  string sql = "select * from sys.databases ";//获得服务器上的所有数据库                  cmbdatabase.Items.Add("全部库");                  using (SqlCommand cm = new SqlCommand(sql, con))                  {                        SqlDataAdapter a = new SqlDataAdapter(cm);                        a.Fill(t);                        foreach (DataRow r in t.Rows)                        {                            cmbdatabase.Items.Add(r["name"].ToString());//将获得的数据库添加到combox控件                        }                  }                }            }            catch (Exception ex)            {                MessageBox.Show(ex.Message);            }            cmbdatabase.Enabled = true;//将显示数据库的combox控件设置为可用            label5.Enabled = true;            cmbdatabase.SelectedIndex = 0;//默认选择全部数据库
页: [1]
查看完整版本: 黑马程序员------(1).net c# 一步一步自己写三层代码生成器(主界面及连接数据库界面)