您的位置:首页 > 数据库

三层模式中,多条件查询中的sql语句拼接

2014-05-15 17:18 295 查看
private void btnSelect_Click(object sender, EventArgs e)
{
//多条件查询
//只有在界面拼接sql语句了,使用两个List 来分别存储sql拼接语句和sql参数

List<string> sqlList = new List<string>();
List<SqlParameter> spList = new List<SqlParameter>();

if (cbbClasses.SelectedValue.ToString() != "-1")
{
//MessageBox.Show("你选中了" + cbbClasses.SelectedValue.ToString());
sqlList.Add("CID=@CID");
spList.Add(new SqlParameter("@CID", SqlDbType.Int) { Value = cbbClasses.SelectedValue });
}

if (!string.IsNullOrEmpty(txtName.Text.Trim()))
{
sqlList.Add("Name=@Name");
spList.Add(new SqlParameter("@Name", SqlDbType.NVarChar) { Value = txtName.Text.Trim() });
}

if (comboBoxGender.SelectedIndex > 0)
{
sqlList.Add("Gender=@Gender");

spList.Add(new SqlParameter("@Gender", SqlDbType.NVarChar) { Value = comboBoxGender.Text });
}

sqlList.Insert(0, " isDel=0");

string sql = "select * from Students";

if (sqlList.Count > 0)
{
sql += " where " + string.Join(" and ", sqlList);

}

List<StudentModel> stulList = new StudentBLL().GetStudentBySql(sql, spList.ToArray());

dgvStudens.DataSource = stulList;
}

上面是一个名称为"筛选"按钮的响应事件,在View层

接下来的是BLL层,view层调用bll层的这个GetStudentBySql方法

//传入sql拼接好的语句和参数,返回结果集
public List<StudentModel> GetStudentBySql(string sql, SqlParameter[] sps)
{
return new StudentDAL().GetStudentBySql(sql, sps);
}


最下面的就是DAL层的方法

//传入sql拼接好的语句和参数,返回结果集
public List<StudentModel> GetStudentBySql(string sql, SqlParameter[] sps)
{
DataRowCollection rows = SQLHelper.ExecuteDataSet(sql, sps).Rows;

List<StudentModel> stulist = new List<StudentModel>();
StudentModel stu = null;
foreach (DataRow row in rows)
{
stu = Row2StudentModel(row);
stulist.Add(stu);
}

return stulist;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: