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;
}