(1).net c# 一步一步自己写三层代码生成器(主界面及连接数据库界面)
来源:互联网 发布:微博怎么解绑淘宝 编辑:程序博客网 时间:2024/04/25 22:57
自己动手写代码生成器(主界面及连接sql数据库读取数据库和数据库中的表)
(1)打开visual studio 建立winfrom项目,首先建立主界面如下图
目前用到了 两个个控件:一个上方的"连接服务器"button按钮(点击时弹出连接sql服务器对话框),一个treeview控件(显示从sql服务器中读取到的数据库及数据库中的表)
(2)建立连接服务器界面 。如下图:
服务器地址: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事件中写如下代码:
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;//默认选择全部数据库
把这段代码封装为一个方法 因为要重复调用。
接下来给确定按钮click事件添加如下代码:
if (!readdatabasok)//readdatabasok这个字段表是否已经读取了数据库如果没有的话,读取数据库
{
getdatabase();
}
isok = true;
Close();
这样我们连接服务器的模块 基本做完了。接下就是主界面了。
当单击连接服务器按钮时显示我们刚才做的连接服务器界面,给clik事件添加如下代码:
conserver c = new conserver();//实例化一个服务器界面对象
c.ShowDialog();//显示出来
当我们在连接服务器界面连接好服务器并选择了数据库后,我们就需要在主界面中读取我们选择的数据库,并加载到主界面的treeview控件上。这时就需要窗体间的传值了。关于窗体的传值可以参考这篇文章:http://www.cnblogs.com/jianzaochuanwu/archive/2012/05/16/2503475.html
连接数据库按钮的click事件代码完整如下:
c.ShowDialog(); if (c.isok) { ComboBox cc = c.getcomserver; TreeNode node = new TreeNode(); node.Text = c.cboadress.Text; node.ImageIndex = 0; tvwserverlist.Nodes.Add(node); if (cc.SelectedItem.ToString() == "全部库") { for (int i = 1; i < cc.Items.Count; i++) { TreeNode cnode = new TreeNode(); cnode.ImageIndex = 1; cnode.SelectedImageIndex = 1; cnode.Text = cc.Items[i].ToString(); node.Nodes.Add(cnode); readtable(cnode.Text, cnode); } } else { TreeNode cnode = new TreeNode(); cnode.ImageIndex = 1; cnode.SelectedImageIndex = 1; cnode.Text = cc.SelectedItem.ToString(); node.Nodes.Add(cnode); readtable(cnode.Text, cnode); } }
根据数据库读取表的方法readtable方法定义如下
//读取数据库中的表 public void readtable(string databasename,TreeNode n) { string constr = c.content.Replace("master", databasename); string sql="select * from INFORMATION_SCHEMA.TABLES"; using (SqlConnection con = new SqlConnection(constr)) { con.Open(); using (SqlCommand cm = new SqlCommand(sql, con)) { SqlDataAdapter a = new SqlDataAdapter(cm); DataTable t = new DataTable(); a.Fill(t); foreach (DataRow r in t.Rows) { TreeNode tablenode = new TreeNode(); tablenode.Text = r["TABLE_NAME"].ToString(); tablenode.ImageIndex = 3; tablenode.SelectedImageIndex = 3; n.Nodes.Add(tablenode); } } } }
这样主界面 和连接服务器界面基本功能就完成了。
代码下载:(http://115.com/file/e78q71k3#代码生成(主窗体和连接服务器部分).zip)
- (1).net c# 一步一步自己写三层代码生成器(主界面及连接数据库界面)
- 为自己的C# ORM 写一个代码自动生成器
- 自己写的.Net(C#)代码自动生成器
- 自己写的.Net(C#)代码自动生成器
- 自己写的.Net(C#)代码自动生成器
- 用ASP.NET连接数据库写的一个登陆注册界面
- 自己动手写三层(不用代码生成器)
- C#设计登录界面及代码
- 自己写的代码生成器
- C++写功能代码C#写界面的英汉词典
- 原创C#三层结构代码生成器
- 用动软.net代码生成器 搭建三层架构
- 界面连接数据库
- 动软.Net代码生成器无法连接数据库问题!
- 用C#连接Access数据库做登录界面
- 初识.net界面程序(10)--连接MYSQL数据库
- c#连接sql 2014登录界面及密码验证
- JSP简单登录界面连接数据库的代码
- obo文件中标签的含义
- bash中profile等配置文件执行顺序
- performSelector延时调用导致的内存泄露
- [转]QT中各种MessageBox的使用
- 递归求和
- (1).net c# 一步一步自己写三层代码生成器(主界面及连接数据库界面)
- 如何解决 Eclipse中出现-访问限制由于对必需的库XX具有一定限制,因此无法访问类型
- (补)第十三周实验报告(4)
- .off文件
- k-means聚类的缺点
- 从U盘安装Linux的一点心得体会(转)
- 2440的中断处理
- bug
- Dos "%~dpn0.sh"