今天我们将用C#语言中的窗体来管理数据库,何为窗体?
窗体就是.NET Framework中的常用控件! 窗体是由 控件,属性,事件 组成的!
今天我们将用窗体来实现登陆管理数据库,首先我们需要先创建一个登陆界面的窗体
这个窗体中有5个控件,分别为 Label标签 (用于用户不能编辑的文本或图片) TextBox文本框 (用于获取用户输入的信息)
ComboBox组合框 (允许用户在组合框内输入的文本后从列表中进行选择)
Button按钮 (允许用户进行单击来操作)
平常我们创建控件的时候都会更改属性中的Name和Text,根据大家的"喜好" 更改
因为这个窗体是登陆界面所以大家写的连接代码应该写在登陆这个按钮控件中,当用户点击登陆时开始连接数据库判断用户输入的用户密码是否存在;
在我的数据库中有个MySchool数据库当中Student表中如上图.
现在就是重要部分了那就是用C#语言编写连接,判断;
string str = "Data source=.;initial catalog=MySchool;uid=sa;"; //连接数据库 SqlConnection con = new SqlConnection(str); string sql = "select count(1) from student where studentname='" + txtname.Text + "' and loginpwd='" + txtpwd.Text + "'"; SqlCommand cmd = new SqlCommand(sql, con); try { con.Open(); int count = Convert.ToInt32(cmd.ExecuteScalar());//给数据库传值 if (count > 0)//判断是否成功,成功COUNT大于0反之你脑子就有病了!!!!!!!!!! { this.Hide(); lnlwinds frm = new lnlwinds(); frm.Show(); } } catch (Exception) { MessageBox.Show("脑子有病"); } finally { con.Close(); }
如果成功后我们就该写第二个窗体了,当然第一个窗体有一点小瑕疵,那就是不够华丽,为啥那么说呢?因为我没有设置它的背景图片,当然大家写着个不就是为了好看吗!但是不实用!(本人自己的观点!)
回到话题看图
此图为第二个窗体运用的是两个新控件分别是菜单栏和工具栏
MenuStrip菜单栏(通过菜单栏把引用程序的功能进行分组,能够方便用户查找和使用,菜单栏包含的每一项都是顶层菜单项,顶层菜单项下的选项称为"子菜单"或"菜单项")
ToolStrip工具栏(可以显示文字,图片或文字加图片)]
但是这不算完因为我们要写的是管理系统所以这只是一个框架!而接下来的就是关键了就是添加,删除,更改,而且还要把这几个窗体关联起来
把思路理清楚,我先和大家讲讲父子窗体吧!父子窗体就是外面一个大窗体包裹着一个窗体如图
MDI(是.NET中的运用程序,而每个应用程序只有一个MDI父窗体,而且MDI子窗体出不了父窗体)
设置父子窗体的方法:
1.将父窗体属性中的IsMdiContainer属性设置为True
2.调用时打开子窗体的SHOW()方法前,在代码中将子窗体的MdiParent属性设置为This.
而后就该是添加,在这里我们使用这个方法的窗体是增加学员!
此代码为添加(借鉴)
string pwd = txtpwd.Text; //获得第一次输入密码 string agePqd = txttowpwd.Text; //获得第二次输入的密码 if (agePqd.Equals(pwd)) { string name = textname.Text; //获得用户输入的名字 int grendID = Change(); //获得用户输入年级 string phone = textphone.Text; //获得用户输入的电话 string Email = txtEmail.Text; //获得用户输入的Email DateTime birthday = time.Value; //获得用户输入的出生日期 string gender = string.Empty; //获得用户输入的性别 if (boy.Checked) { gender = "1"; } else { gender = "0"; } SqlConnection con = null; try { string str = "data source=.;initial catalog=MySchool;user ID=sa;"; con = new SqlConnection(str); con.Open(); string sql = "insert Student values('" + pwd + "','" + name + "','" + gender + "'," + grendID + ",'" + phone + "','" + birthday + "','" + Email + "');select @@identity"; SqlCommand com = new SqlCommand(sql, con); int count = Convert.ToInt32(com.ExecuteScalar()); if (count > 0) { DialogResult result = MessageBox.Show("添加成功!", "用户提示", MessageBoxButtons.YesNo, MessageBoxIcon.Information); txtstudentnumber.Text = count.ToString(); if (result == DialogResult.Yes) { this.Close(); } } } catch (Exception) { MessageBox.Show("添加失败!", "用户提示", MessageBoxButtons.YesNo, MessageBoxIcon.Information); } finally { if (con != null) { con.Close(); } } } else { MessageBox.Show("两次输入的密码不一致!", "用户提示", MessageBoxButtons.YesNo, MessageBoxIcon.Information); }
此代码为删除
DialogResult result= MessageBox.Show("您确定要清空所填入的数据?","用户提示",MessageBoxButtons.YesNo,MessageBoxIcon.Information); if (result == DialogResult.Yes) { txtgrade.SelectedIndex = 0; //默认年级框的值为第一项 foreach (Control item in register.Controls) //因为有GroupBox控件,所以要用foreacher { if (item is TextBox) { item.Text = string.Empty; } } foreach (Control item in message.Controls) { if (item is TextBox) { item.Text = string.Empty; } } }
有删除有添加,下面就该查询自己是否完成所以还要写一个查询页面
在此窗体中运用了ContextMenuStrip控件,我们要打开控件的Items属性打开 项集合编辑器 然后在项集合中添加成员并编写Text和Name属性;然后就是查询代码;
private void button1_Click(object sender, EventArgs e) { //查询数据,清空LIstView中的数据 lvStuList.Items.Clear(); string sql = @"select Studentno,Studentname,Gender,gradename from student,grade where student.gradeid=grade.gradeid and studentname like '%" + txtname.Text + "%' "; LoadDataFromDBToListView(sql); } private void btnSearch_Load(object sender, EventArgs e) { string sql = @"select Studentno,Studentname,Gender,gradename from student,grade where student.gradeid=grade.gradeid "; LoadDataFromDBToListView(sql); }
好了就才再次结束吧!!!!!!!!!!!!!!!!!!!!!!!!!!11