本次完成学生信息管理界面的实现,
注意!!
控件的名字一定要重命名,如果在重命名之前双击了,就会导致加入到代码里面的函数名称很不好辨认 。
对于消除这种无用函数的方法在文末。
下图是界面的展示:
学生信息管理界面的功能包括:
可以在数据列表中显示、增加、修改、删除学生信息;
首先需要链接数据表,如下是链接数据表函数:
SqlConnection Con = new SqlConnection(@"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=""F:\Microsoft Visual Studio\Project\Bookshop\DataBase\Regedit.mdf"";Integrated Security=True;Connect Timeout=30"); //新建一个全局数据库对象,使用该对象来操作全局的,@""是连接字符串,用于获取/打开SQLserver
接着在界面上显示出已有数据表:
private void populate() //数据表函数
{
Con.Open();
string query = "select * from StudentTable"; //SQL语句,查询数据表中的信息
SqlDataAdapter sda = new SqlDataAdapter(query,Con); //创建批量抓取
SqlCommandBuilder builder = new SqlCommandBuilder(sda); //Adapter通常与commandbuilder配合使用,便于批量处理数据库
var ds = new DataSet(); //创建虚拟表
sda.Fill(ds);
StudentDGV.DataSource = ds.Tables[0]; //把列表显示出来
Con.Close();
}
1、增加数据
数据增加通过这个SQL语句实现
注意区分:SClass.SelectedItem与SClass.SelectedIndex;
前者表示:下拉列表的整体组件
后者表示:下拉列表本体中的某一条被选中的内容
string query = "insert into StudentTable values('" + SName.Text + "','" + STeachers.Text + "','" + SClass.SelectedItem.ToString() + "')";
这里' " " '的方式表示插入的数据类型是字符串类型,要和数据库里定义的数据类型一致!
增加数据后伴随着保存数据
这里的 || 和C语言的 && 一样
private void Administar_Click(object sender, EventArgs e)
{
if (SName.Text == "" || STeachers.Text == "" || SClass.SelectedIndex == -1) //有一个没填上都不行
{
MessageBox.Show("信息不足,请填写完整");
}
else
{
//在进行保存之前要先打开数据库,之后要关闭
//为了捕捉异常,把代码放在try里面,代码会运行try里的所有语句
//没有异常就会一个接一个运行,出现异常就会跳出try进入catch
try
{
Con.Open();
string query = "insert into StudentTable values('" + SName.Text + "','" + STeachers.Text + "','" + SClass.SelectedItem.ToString() + "')";
SqlCommand cmd = new SqlCommand(query,Con); //SQL语句,插入命令
cmd.ExecuteNonQuery(); //使用更新数据库命令
//保存操作完成后,弹出消息框提示保存完成
MessageBox.Show("信息保存成功!");
Con.Close();
populate();
Reseinput();
}
catch (Exception Ex) //catch捕捉异常
{
MessageBox.Show(Ex.Message);
}
}
}
2、修改数据
//按键:修改
private void button2_Click(object sender, EventArgs e)
{
if (SName.Text == "" || STeachers.Text == "" || SClass.SelectedIndex == -1) //有一个没填上都不行
{
MessageBox.Show("信息不足,请填写完整");
}
else
{
//在进行保存之前要先打开数据库,之后要关闭
//为了捕捉异常,把代码放在try里面,代码会运行try里的所有语句
//没有异常就会一个接一个运行,出现异常就会跳出try进入catch
try
{
Con.Open();
string query = "update StudentTable set SName = ('" + SName.Text + "') ,STeachers = ('" + STeachers.Text+ "') ,SClass = ('" + SClass.SelectedItem.ToString() + "') where SId = "+key+""; //删除Id是key的那条记录
SqlCommand cmd = new SqlCommand(query, Con); //SQL语句,插入命令
cmd.ExecuteNonQuery(); //使用更新数据库命令
//保存操作完成后,弹出消息框提示保存完成
MessageBox.Show("信息修改完成!");
Con.Close();
Reseinput();
}
catch (Exception Ex) //catch捕捉异常
{
MessageBox.Show(Ex.Message);
}
}
3、查询函数
这里需要一个过滤函数,使用于搜索下拉列表中选定的信息
private void Fileter()
{
Con.Open();
string query = "select * from StudentTable where SClass = '"+Catsearch.SelectedItem.ToString()+"'"; //SQL语句,查询和选定类别一致的数据
SqlDataAdapter sda = new SqlDataAdapter(query, Con); //创建批量抓取
SqlCommandBuilder builder = new SqlCommandBuilder(sda); //Adapter通常与commandbuilder配合使用,便于批量处理数据库
var ds = new DataSet(); //创建虚拟表
sda.Fill(ds);
StudentDGV.DataSource = ds.Tables[0]; //把列表显示出来
Con.Close();
}
之后引入查询函数
//函数:选定分类,进行查询
private void Catsearch_SelectionChangeCommitted(object sender, EventArgs e)
{
Fileter();
}
4、重置输入数据
这里需要一个重置函数
int key = 0;
//事件:把选中的列表信息填入上方的文本输入框和下拉列表中
private void StudentDGV_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
SName.Text = StudentDGV.SelectedRows[0].Cells[1].Value.ToString();
STeachers.Text = StudentDGV.SelectedRows[0].Cells[2].Value.ToString();
SClass.SelectedItem = StudentDGV.SelectedRows[0].Cells[3].Value.ToString();
//删除功能
if (SName.Text == "") //判断是否选定了一条数据
{
key = 0;
}
else //如果选定了数据,就捕获第一列的SId,赋值给key
{
key = Convert.ToInt32(StudentDGV.SelectedRows[0].Cells[0].Value.ToString());
}
}
//按键:搜索/更新
private void button3_Click(object sender, EventArgs e)
{
populate();
this.Catsearch.SelectedIndex = -1; //清除原搜索类别
}
5、删除数据
数据删除的功能由SQL语句实现
//按键:删除
private void Delete_Click(object sender, EventArgs e)
{
if (key == 0) //姓名没填写
{
MessageBox.Show("信息不足,请填写完整");
}
else
{
//在进行保存之前要先打开数据库,之后要关闭
//为了捕捉异常,把代码放在try里面,代码会运行try里的所有语句
//没有异常就会一个接一个运行,出现异常就会跳出try进入catch
try
{
Con.Open();
string query = "delete from StudentTable where SId = ('" + key + "')"; //删除Id是key的那条记录
SqlCommand cmd = new SqlCommand(query, Con); //SQL语句,插入命令
cmd.ExecuteNonQuery(); //使用更新数据库命令
//保存操作完成后,弹出消息框提示保存完成
MessageBox.Show("信息删除完成!");
Con.Close();
Reseinput();
}
catch (Exception Ex) //catch捕捉异常
{
MessageBox.Show(Ex.Message);
}
}
6、在数据表中按照学生类别筛选信息
在开启下拉列表时,开启过滤函数
//函数:选定分类,进行查询
private void Catsearch_SelectionChangeCommitted(object sender, EventArgs e)
{
Fileter();
}
可以选定一条信息的基础上,获取数据表信息加入输入框进行修改。
PS:消除冗余函数的方法
如果不小心双击了某个控件,添加了不必要的函数,说明是触发了这个控件的"事件"。
例如我双击了这些控件但是并没有用:
只需选中目标控件,在“事件”里重置事件即可;