哈喽,你好啊,我是雷工!
在项目开发中涉及到许多通过多个条件勾选来实现动态的多个条件查询的情况,
此节记录多条件查询的后台代码编写,以下为学习笔记。
通过界面输入框输入或者下拉框下拉选择任意查询条件,在后台将所填写或选择的条件进行组合,然后进行数据查询。
根据三层架构,首先编写数据访问层;
编程思路:
①:定义基本的SQL语句;
②:定义组合条件语句;
③:将基本的SQL语句和动态的条件语句组合起来;
④:执行组合的查询语句;
⑤:封装查询结果;
⑥:返回查询结果;
编程代码如下:
- ///
-
- /// 根据多个查询条件动态组合查询
-
- ///
-
- /// 账号类型
-
- /// 账号名称
-
- ///
-
- public List
QueryAccount(int typeId,string accountName ) -
- {
-
- //①:定义基本的SQL语句
-
- string sql = "select AccountId,AccountName,AccountContent,originality,TypeId,AuthorName from Account";
-
- sql += " inner join Author on Author.AuthorId=Auccount.AuthorId where";
-
- //②:定义组合条件
-
- string whereSql = string.Empty;
-
- if(typeId!=-1)
-
- {
-
- whereSql += "and TypeId=" + typeId;
-
- }
-
- if(accountName!="")//此处没有必要检查null,因为通过文本框传递的数据永远不可能为null
-
- {
-
- whereSql += $" and AccountName like '{accountName}%'";
-
- }
-
- //在实际项目开发中,如果还有其他的条件,在此处继续添加if判断;
-
-
-
- //③:将动态的查询条件和前面的基本查询语句结合
-
- sql += whereSql.Substring(3);//把第一个and去掉后,组合sql语句
-
-
-
- //④:执行查询语句
-
- SqlDataReader reader = SQLHelper.GetReader(sql);
-
- //⑤:封装结果
-
- List
list = new List(); -
- while (reader.Read())
-
- {
-
- list.Add(new Account
-
- {
-
- AccountId = (int)reader["AccountId"],
-
- AccountName = reader["AccountName"].ToString(),
-
- AccountContent = reader["AccountContent"].ToString(),
-
- originality = (int)reader["originality"],
-
- TypeId = (int)reader["TypeId"],
-
- AuthorId = (int)reader["AuthorId"],
-
- AuthorName = reader["AuthorName"].ToString()
-
- });
-
- }
-
- reader.Close();
-
- //⑥:返回结果
-
- return list;
-
- }
①:前面练习时Account没加AuthorId列,重新创建了一下Account表;

②:数据库添加完列,在实体类添加对应字段

此次练习业务比较简单,只是传递作用;
在业务逻辑层LeiGongBLL的AccountManager类中添加如下代码:
- ///
-
- /// 根据多个查询条件动态组合查询
-
- ///
-
- /// 账号类型
-
- /// 账号名称
-
- ///
-
- public List
QueryAccount(int typeId, string accountName) -
- {
-
- return accountServices.QueryAccount(typeId, accountName);
-
- }
以上为多条件动态查询的所有后端代码的练习,接下来继续学习UI层的实现;
有感兴趣的小伙伴可以继续围观。