数据库应用系统开发
实验目的
熟悉c/s架构,利用c#语言中ado.net类与winform工具实现数据库友好操作界面
实验环境
Microsoft visual studio2015
实验内容
根据实验已给内容初步学习ado.net类与winform工具
在app.config文件中设置服务器为本地主机,并使用数据库School
查询功能的实现:
private void btnSearch_Click(object sender, EventArgs e)
{
Search();
}
查询控件对应与btnSearch_Click函数,当单击“查询”时,便会触发该函数运行。
private void Search()
{
string strID = string.Empty;
string strName = string.Empty;
strID = txtNo.Text.Trim();
strName = txtName.Text.Trim();
string strSql = string.Empty;
strSql = @"SELECT SID, SName, Grade, Email
FROM Students
WHERE ";
if (strID != string.Empty)
{
strSql += " Sid LIKE '%" + strID + "%'";
}
if (strName != string.Empty)
{
strSql += "AND SName LIKE '%" + strName + "%'";
}
strSql += " ORDER BY Sid";
DataSet dsDataStudent = new DataSet();
dsDataStudent = DbHelperSQL.Query(strSql);
gridStudent.AutoGenerateColumns = false;
gridStudent.DataSource = dsDataStudent.Tables[0];
gridStudent.ClearSelection(); //取消选中
}
函数实现逻辑:
先将两个txt文本中的内容赋值给字符串变量学号和姓名
再用字符串变量存储sql查询语句“SELECT SID, SName, Grade, Email FROM Students WHERE
Sid LIKE '%" + strID + "%' AND SName LIKE '%" + strName + "%' ORDER BY Sid“
在用sql查询该语句,将结果保存在Dataset类中,并显示。
主要使用到了DataGridView类
截图:
删除功能实现:
private void btnDelete_Click(object sender, EventArgs e)
{
if (StudentIDSelected == string.Empty)
{
MessageBox.Show("请选择要删除的行");
return;
}
if (DialogResult.Yes == MessageBox.Show("确定要删除该记录", "警告", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1))
{
string strSql = string.Empty;
strSql = @"DELETE FROM Students
WHERE SID ='" + StudentIDSelected + "'";
DbHelperSQL.ExecuteSql(strSql);
StudentIDSelected = string.Empty;
Search();
}
}
private void gridStudent_CellClick(object sender, DataGridViewCellEventArgs e)
{
StudentIDSelected=gridStudent.Rows[e.RowIndex].Cells["SID"].Value.ToString().Trim();
}
函数逻辑:
先定义私有字符串变量 private string StudentIDSelected = string.Empty;
当点击删除键没有选择要删除的行时,显示警告消息
鼠标单击一行时给字符串变量赋值
StudentIDSelected=gridStudent.Rows[e.RowIndex].Cells["SID"].Value.ToString().Trim();
将sql语句补充完整,并执行sql删除语句后重新显示新的数据
截图:
自己实现新增,编辑功能
新增功能实现:
- 新建一个新增需要用到的窗口,并给它添加好控件,如图所示:
- 在点击“新增”按钮时需要将新建的窗口弹出,使用如下语句:
StudentAdd studentAdd = new StudentAdd();
studentAdd.Owner = this;
studentAdd.ShowDialog();
- 根据新窗口输入的信息,直接编写sql语句,利用之前编写好的sql执行函数执行
private void button1_Click(object sender, EventArgs e)
{
string strID = string.Empty;
string strName = string.Empty;
string strGrade = string.Empty;
string strEmail = string.Empty;
strID = textBox1.Text.Trim();
strName = textBox2.Text.Trim();
strGrade = textBox3.Text.Trim();
strEmail = textBox4.Text.Trim();
string strSql = string.Empty;
strSql = @"insert into STUDENTS values('"+strID+"','" + strName+"','" + strEmail + "','" + strGrade + "') ";
DbHelperSQL.ExecuteSql(strSql);
this.Close();
}
- 演示:
数据编辑实现:
- 新建一个新增需要用到的窗口,并给它添加好控件。
- 在选择修改时需要先选定一行,并获取这行的ID。
- 选择好后,弹出新的Form,并根据用户输入数据编写修改sql语句执行。
- 重新显示修改好后的数据。
- 演示如下:
实验总结
本次实验对我而言是一次非常有意思的实验,因为我学会了如何为一个程序设计窗口,这是我一直好奇但是没有实践的想法。
在microsoft visual stdio中,用c#库中的window窗体库,里面有非常丰富的库函数和可视化的设计控件,新建窗口后,对每个控件根据自己需要添加相应的后台函数。
除了初步认识外,我还懂得一些高级的操作,例如联系本地数据库,显示新的数据,弹出新form,选取选中行等等。还有很多新的知识等着我去了解。
最后更深刻的认识是虽然一些面向用户的界面很酷炫,但是支持它们实现的依然是起内部的算法和基本逻辑,所以核心还是要掌握好数据结构和算法。