数据库实习详解:基于数据库的C/S程序开发

老版本的实习指导在这一块的内容完全过时,过于简略的内容对没有任何窗口程序编写经验的初学者很不友好,网上也缺乏详细的教程以供初学者借鉴。
介于此,我将在本文中对数据库实习“基于数据库的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已被修改。
在这里插入图片描述

数据删除

删除付同学的记录。
选中,点击删除。
在这里插入图片描述
再次查询已经没有这条记录了。
在这里插入图片描述

写在后面

本文只能帮你应付本次实习,如果要真正掌握基于数据库的应用程序编写,还需踏实学习。如果本文对你有帮助,请点赞,这也是支持我继续写下去的动力。

  • 17
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值