老版本的实习指导在这一块的内容完全过时,过于简略的内容对没有任何窗口程序编写经验的初学者很不友好,网上也缺乏详细的教程以供初学者借鉴。
介于此,我将在本文中对数据库实习“基于数据库的C/S程序开发”的操作过程进行详细展示,以供读者参考,如果本文对你有帮助,请点赞,这也是支持我继续写下去的动力。
实验目的
了解用C#开发基于SQL Server数据库的窗体应用程序的过程。
实验步骤
环境搭建
该项目采用C#开发,因此在编写程序之前需要搭建环境。打开Visual Studio 2019,点击“工具——获取工具和功能”,勾选 “.NET桌面开发”进行安装。
创建项目
选择Windows窗体控件库(.NET Framework)
绘制界面
打开工具箱,拖拽控件至主窗体Form1。
选中控件,在属性——Text可以更改控件上的文字
在项目右键,选择添加,新建项,选择添加窗体。
拖拽控件,绘制学生信息添加窗口。
同样的方法添加然后绘制学生信息修改窗口。
选中学号编辑框,将其Name改为txt_sid,如下图所示:
用同样的方法按照下表给其他控件改名
控件 更改的(Name)
主窗口
学号输入框 txt_sid
姓名输入框 txt_sname
查询按钮 btn_find
新增按钮 btn_add
删除按钮 btn_delete
编辑按钮 btn_update
DataGridCiew列表控件 studentsList
新增窗口
学号输入框 txt_add_sid
姓名输入框 txt_add_sname
邮箱输入框 txt_add_email
年级输入框 txt_add_grade
确定按钮 btn_confirm_add
添加窗口
学号输入框 txt_update_sid
姓名输入框 txt_update_sname
邮箱输入框 txt_update_email
年级输入框 txt_update_grade
如果你在没给控件改名之前不小心双击了控件,可以点击自动生成的代码上方的“1个引用”,双击跳转到引用它的位置,删除引用它的这行代码,然后再回来删除自动生成的函数。
配置数据库
修改App.config文件,添加以下选中的代码:
<appSettings>
<add key="connectionString">
value="server=localhost;database=School;uid=sa;pwd=123456"/>
</appSettings>
右键“引用”,选择添加引用,
勾选
打开SQL Server Management,展开“安全性”,展开“登录名”,右键单击“sa”,打开属性,把密码改为123456。点击“状态”做如下设置:
如图右键属性,做如下配置:
在安全性勾选SQL Server和Windows 身份验证
在开始菜单打开SQL Server 配置管理器
重启SQL Server服务
编写代码
在Form1.cs的如下图所示的位置添加该代码:
static string connectionString =System.Configuration.ConfigurationManager.AppSettings["connectionString"];
public static DataSet Query(String sql)
{
SqlConnection con = new SqlConnection(connectionString);
SqlDataAdapter sda = new SqlDataAdapter(sql, con);
DataSet ds = new DataSet();
try
{
con.Open();
sda.Fill(ds, "students");
return ds;
}
catch (SqlException e)
{
throw new Exception(e.Message);
}
finally
{
sda.Dispose();
con.Close();
}
}
public static int ExecuteSql(String sql)
{
SqlConnection con = new SqlConnection(connectionString);
SqlCommand cmd = new SqlCommand(sql, con);
try
{
con.Open();
int rows = cmd.ExecuteNonQuery();
return rows;
}
catch(SqlException e)
{
throw new Exception(e.Message);
}
finally
{
cmd.Dispose();
con.Close();
}
}
在Form3.cs中,对Form3函数做如下修改:
public Form3(string sid,string sname,string email,string grade)
{
InitializeComponent();
txt_update_sid.Text = sid;
txt_update_sname.Text = sname;
txt_update_email.Text = email;
txt_update_grade.Text = grade;
}
在主窗口双击“查询”按钮,在生成的函数中填入如下代码,表示点击这个控件要进行的操作。
string sid = txt_sid.Text.Trim();
string sname = txt_sname.Text.Trim();
this.studentsList.DataSource = Query("select * from students where sid like '%" + sid + "%' and sname like '%'").Tables["students"];
在主窗口双击“新增”按钮,在生成的函数中填入如下代码:
Form2 childrenForm = new Form2();
childrenForm.Owner = this;
childrenForm.Show();
在主窗口双击“删除”按钮,在生成的函数中填入如下代码:
int a = studentsList.CurrentRow.Index;
string sid = studentsList.Rows[a].Cells[0].Value.ToString().Trim();
string sql = "delete from students where sid='" + sid + "'";
if(ExecuteSql(sql)>0)
{
MessageBox.Show("删除成功");
}
在主窗口双击“更新”按钮,在生成的函数中填入如下代码:
int a = studentsList.CurrentRow.Index;
string[] str = new string[studentsList.Rows.Count];
for (int i=0; i < studentsList.Columns.Count; i++)
{
str[i] = studentsList.Rows[a].Cells[i].Value.ToString();
}
Form3 childrenForm = new Form3(str[0], str[1], str[2], str[3]);
childrenForm.Owner = this;
childrenForm.Show();
在Form2(学生信息添加窗口)双击“确定”按钮,在自动生成的函数中添加如下代码:
string sid = txt_add_sid.Text.Trim();
string sname = txt_add_sname.Text.Trim();
string email = txt_add_email.Text.Trim();
string grade = txt_add_grade.Text.Trim();
string sql = "insert into students values('" + sid + "','" + sname + "','" + email + "','" + grade + "')";
Form1.ExecuteSql(sql);
this.Close();
在Form3(学生信息修改窗口)双击“确定”按钮,在自动生成的函数中添加如下代码:
string sid = txt_update_sid.Text.Trim();
string sname = txt_update_sname.Text.Trim();
string email = txt_update_email.Text.Trim();
string grade = txt_update_grade.Text.Trim();
string sql = "update students set sname='"+sname+"',email='"+email+"',grade='"+grade+"' where sid='"+sid+"'";
Form1.ExecuteSql(sql);
this.Close();
测试程序
运行之前,确保你本地的SQL server数据库中有名为School的数据库,并有名为student,包含sid,sname,email,grade四个属性的表。
数据查询
输入待查询的关键字,点击查询,结果如下:
数据添加
经查询,添加成功:
数据更新
比如要修改付同学的email,从1003670@修改为123456@,
确定后,再次查询,可见付同学的email已被修改。
数据删除
删除付同学的记录。
选中,点击删除。
再次查询已经没有这条记录了。
写在后面
本文只能帮你应付本次实习,如果要真正掌握基于数据库的应用程序编写,还需踏实学习。如果本文对你有帮助,请点赞,这也是支持我继续写下去的动力。