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

本文介绍了一个基于C#实现的学生信息管理系统中多条件查询的功能。通过界面输入不同的筛选条件,如班级、姓名和性别,系统能够动态生成SQL查询语句并获取相应数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值