我们分析前面的插入、删除和更新操作,发现许多代码是重复的,这不符合代码重用和简洁的标准。下面在窗体中创建一个专门连接数据库的方法,将重复代码封装,实现代码重用。

        //创建一个方法,执行数据库通用操作
        private void GetData(string sql)
        {
           //创建Connection对象
            string strcon = @"Data Source=(local)\sqlexpress;Initial Catalog=School;Integrated Security=True;Pooling=False";
            SqlConnection con = new SqlConnection(strcon);
            //创建Command对象
            SqlCommand comm = new SqlCommand(sql, con);
            try
            {
                //打开连接
                con.Open();
                //执行sql操作
                if (comm.ExecuteNonQuery() > 0)
                {
                    MessageBox.Show("操作成功");
                }

                else
                    MessageBox.Show("操作失败");
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
            finally
            {
                con.Close();//关闭连接
            }
               
        }

上面代码创建了一个带参数的方法GetData(sql),sql语句作为参数,在增加,删除和更新按钮的Click事件中,分别定义各自的sql语句,即可实现相应的功能。

其代码分别如下:

        private void btnAdd_Click(object sender, EventArgs e)
        {

            //添加新数据的SQL语句
            string sql = "insert into Student values('"+this.txtName.Text.Trim()+"','"+this.cboSex.Text+"',"+Convert.ToInt32(this.txAge.Text)+",'"+this.cboClass.Text+"')";
            //调用通用方法执行
            GetData(sql);
            // 启用id的文本框
            this.txtId.Enabled = true;
            this.btnDelete.Enabled = true;
            this.btnModify.Enabled = true;
            this.txAge.Text = "";
            this.txtName.Text = "";

        }

        private void btnExit_Click(object sender, EventArgs e)
        {
            Application.Exit();
        }

        private void btnDelete_Click(object sender, EventArgs e)
        {

            //删除数据的SQL语句
            string sql = "delete from Student where id="+Convert.ToInt32(this.txtId.Text)+"";
            //调用通用方法执行
            GetData(sql);
        }

        private void btnModify_Click(object sender, EventArgs e)
        {

            //添加更新数据的SQL语句
            string sql = "update Student set sname='"+this.txtName.Text+"',ssex='"+this.cboSex.Text+"',sage="+Convert.ToInt32(this.txAge.Text)+",sclassid='"+this.cboClass.Text+"' where id="+Convert.ToInt32(this.txtId.Text)+"";
            //调用通用方法执行
            GetData(sql);
        }

说明:连接数据库时,也可采用Windows集成的方式登录,连接字符串为:

string strcon = @"Data Source=(local)\sqlexpress;Initial Catalog=School;Integrated Security=True;Pooling=False";