四时宝库

程序员的知识宝库

SQL - 增删改查综合应用 - 增删改查操作 184

1 新增数据:向员工表(Employee)中新增一条记录

//向员工表中新增数据
private void btnInsert_Click(object sender, EventArgs e)
{
    //获取下面控件的对应值
    //1获取所属部门id
    string Did = cmbD.SelectedValue.ToString();
    //2获取姓名
    string name = txtName.Text;
    //3获取性别
    string gender = cmbGender.SelectedIndex.ToString();
    //4获取年龄
    string age = txtAge.Text;
    //5获取入职日期
    string date = dtp1.Value.ToString("yyyy-MM-dd");
    //EIsDel 字段有默认值 0,与性别字段很像可自行添加实现
  
    //6编写新增数据的SQL语句
    string sql = "insert into Employee(EDid,EName,EGender,EAge,EDatetime)values(@EDid,@EName,@EGender,@EAge,@EDatetime)";
    //7为参数赋值
    SqlParameter[] ps = {
       new SqlParameter("@EDid",Did),                 
       new SqlParameter("@EName",name),                 
       new SqlParameter("@EGender",gender),                 
       new SqlParameter("@EAge",age),                 
       new SqlParameter("@EDatetime",date)                
                        };
    //8调用类库的ExecuteNonQuery()方法
    int r = Helper.SQLHelper.ExecuteNonQuery(sql, ps);
    if (r > 0)
    {
        MessageBox.Show("新增数据成功");
        //重新加载数据
        LoadData();
    }
    else
    {
        MessageBox.Show("新增数据失败");
    }
}

2 修改数据:首先选中dgv1中的哪一数据行,获取当前要进行修改的员工编号(Eid)判断Eid是否等于0,如果等于0表示没有选择数据行,否则根据当前Eid进行修改(昨天的事件中已设置)

//将 Eid=12 的 员工数据

//修改当前选中的员工数据
private void btnMod_Click(object sender, EventArgs e)
{
    if (Eid > 0)
    {
        //获取下面控件的对应值
        //1获取所属部门id
        string Did = cmbD.SelectedValue.ToString();
        //2获取姓名
        string name = txtName.Text;
        //3获取性别
        string gender = cmbGender.SelectedIndex.ToString();
        //4获取年龄
        string age = txtAge.Text;
        //5获取入职日期
        string date = dtp1.Value.ToString("yyyy-MM-dd");
        //6在dgv1_CellClick事件已对成员变量Eid进行赋值
        //7编写修改数据的SQL语句
        string sql = "update Employee set EDid=@EDid,EName=@EName,EGender=@EGender,EAge=@EAge,EDatetime=@EDatetime where EId=@Eid";
        //8为参数赋值
        SqlParameter[] ps = {
       new SqlParameter("@EDid",Did),                 
       new SqlParameter("@EName",name),                 
       new SqlParameter("@EGender",gender),                 
       new SqlParameter("@EAge",age),                 
       new SqlParameter("@EDatetime",date),
       new SqlParameter("@Eid",Eid) 
                        };
        //9调用类库的ExecuteNonQuery()方法
        int r = Helper.SQLHelper.ExecuteNonQuery(sql, ps);
        if (r > 0)
        {
            MessageBox.Show("数据修改成功");
            //重新加载数据
            LoadData();
        }
        else
        {
            MessageBox.Show("数据修改失败");
        }
    }
    else
    {
        MessageBox.Show("请先选择要修改的员工");
    }
}

3 删除数据:根据当前选中的员工编号Eid 进行删除,删除 Eid=12的数据

//删除指定Eid的员工数据
private void btnDel_Click(object sender, EventArgs e)
{

    if (Eid > 0)
    {
        //1编写删除数据的SQL语句
        string sql = "delete from Employee where Eid=@Eid";
        //2为参数赋值
        SqlParameter sp = new SqlParameter("@Eid", Eid);
        //3调用类库的ExecuteNonQuery()方法
        int r = Helper.SQLHelper.ExecuteNonQuery(sql, sp);
        if (r > 0)
        {
            MessageBox.Show("数据删除成功");
            //重新加载数据
            LoadData();
        }
        else
        {
            MessageBox.Show("数据删除失败");
        }
    }
    else
    {
        MessageBox.Show("请先选择要删除的员工");
    }
}

4 多条件筛选数据:其中的关键是如何拼接正确的SQL查询语句

1)当未选择任何条件时:最终要执行的SQL语句

select EId,DName,EName,EAge,EGender,EDatetime,EIsDel from Employee as em inner join Department as de on em.EDid=de.DId 
没有选择任何条件,SQL语句不会加where语句

2)当有选择条件时:判断什么时候加where语句,这里使用泛型集合List实现

--选择 姓 张的 并且 性别为 男的数据
--最终生成的带参数查询的SQL语句
select EId,DName,EName,EAge,EGender,EDatetime,EIsDel from Employee as em
inner join Department as de on em.EDid=de.DId  
where  em.EName like '%'+@EName+'%'  and  em.EGender=@EGender 

--将具体数据填入查询数据
select EId,DName,EName,EAge,EGender,EDatetime,EIsDel from Employee as em 
inner join Department as de on em.EDid=de.DId  
where  em.EName like '%'+'张'+'%'  and  em.EGender=1
//多条件查询
private void btnSearch_Click(object sender, EventArgs e)
{
    //获取员工的部门id
    string EDid = cmbSD.SelectedValue.ToString();
    //获取员工的姓名
    string EName = txtSName.Text;
    //获取员工的性别 0女 1男
    //获取列表中的对象转换为 实体类
    GModel gm = cmbSGender.SelectedItem as GModel;
    //通过实体类 获取当前用户选择下拉列表框中的值
    //-1请选择  0女  1男  
    string EGender = gm.GId.ToString();

    //用于接收筛选条件
    List<string> listSql = new List<string>();
    //用于为参数赋值
    List<SqlParameter> ps = new List<SqlParameter>();
    //判断用户是否选择了部门的条件
    //0 请选择,表示条件没有 所属部门
    if (EDid != "0")
    {
        //注意每个参数前后间的空格
        listSql.Add(" em.EDid=@EDid ");
        ps.Add(new SqlParameter("@EDid", EDid));
    }
    //判断用户是否填写了用户名(使用模糊查询)
    if (!string.IsNullOrEmpty(EName))
    {
        listSql.Add(" em.EName like '%'+@EName+'%' ");
        ps.Add(new SqlParameter("@EName", EName));
    }
    //判断用户是否选择了性别条件
    //默认 -1 ,表示条件没有 性别
    if (EGender != "-1")
    {
        listSql.Add(" em.EGender=@EGender ");
        ps.Add(new SqlParameter("@EGender", EGender));
    }
    //拼接SQL语句
    string sql = "select EId,DName,EName,EAge,EGender,EDatetime,EIsDel from Employee as em inner join Department as de on em.EDid=de.DId ";
    if (listSql.Count > 0)
    {
        sql += " where " + string.Join(" and ", listSql.ToArray());
    }
    //查看最终拼接的SQL语句
    //MessageBox.Show(sql);
    //获取多条件查询后的数据
    DataTable dt = Helper.SQLHelper.ExecuteDataTable(sql, ps.ToArray());
    //将数据绑定到 dgv1 上显示
    dgv1.DataSource = dt;
}

#妙笔生花创作挑战#

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言
    友情链接