C#知识|账号管理系统:多条件动态查询条件的编写。

哈喽,你好啊,我是雷工!

在项目开发中涉及到许多通过多个条件勾选来实现动态的多个条件查询的情况,

此节记录多条件查询的后台代码编写,以下为学习笔记。

01 实现原理

通过界面输入框输入或者下拉框下拉选择任意查询条件,在后台将所填写或选择的条件进行组合,然后进行数据查询。

02 实现步骤

2.1、数据访问层

根据三层架构,首先编写数据访问层;

编程思路:

①:定义基本的SQL语句;

②:定义组合条件语句;

③:将基本的SQL语句和动态的条件语句组合起来;

④:执行组合的查询语句;

⑤:封装查询结果;

⑥:返回查询结果;

编程代码如下:

/// <summary>/// 根据多个查询条件动态组合查询/// </summary>/// <param name="typeId">账号类型</param>/// <param name="accountName">账号名称</param>/// <returns></returns>public List<Account>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<Account> list = new List<Account>();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;}

2.2、细节调整

①:前面练习时Account没加AuthorId列,重新创建了一下Account表;

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

2.3、业务逻辑层

此次练习业务比较简单,只是传递作用;

在业务逻辑层LeiGongBLL的AccountManager类中添加如下代码:

/// <summary>/// 根据多个查询条件动态组合查询/// </summary>/// <param name="typeId">账号类型</param>/// <param name="accountName">账号名称</param>/// <returns></returns>public List<Account> QueryAccount(int typeId, string accountName){return accountServices.QueryAccount(typeId, accountName);}

03 后记

以上为多条件动态查询的所有后端代码的练习,接下来继续学习UI层的实现;

有感兴趣的小伙伴可以继续围观。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/46741.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

《RuoYi基于SpringBoot+Vue前后端分离的Java快速开发框架学习》系列博客_Part2_添加菜单

系列文章目录 Part1:启动RouYi 文章目录 系列文章目录Part1:启动RouYi 实现添加菜单功能来显示新的音图分析页面&#xff08;所截图片都是在已经添加菜单完成后的情况下&#xff09;一、建立一个菜单二、建立数据库1、通过数据库软件建立一个表&#xff0c;供我们使用&#xf…

【Ngix】快速上手,由浅入深

内容概述 1、nginx 简介 &#xff08;1&#xff09;介绍 nginx 的应用场景和具体可以做什么事情 &#xff08;2&#xff09;介绍什么是反向代理 &#xff08;3&#xff09;介绍什么是负载均衡 &#xff08;4&#xff09;介绍什么是动静分离 2、nginx 安装 &#xff08;1…

Leetcode - 周赛406

目录 一&#xff0c;3216. 交换后字典序最小的字符串 二&#xff0c;3217. 从链表中移除在数组中存在的节点 三&#xff0c;3218. 切蛋糕的最小总开销 I 四&#xff0c;3219. 切蛋糕的最小总开销 II 一&#xff0c;3216. 交换后字典序最小的字符串 本题要求交换一次相邻字符…

大数据架构对比记录

Lambda架构 -维护两套项目&#xff0c;开发和维护成本高 -两套链路&#xff0c;数据容易不一致 -数据计算成本大&#xff08;例如原定每小时计算一次&#xff0c;但有额外新需求需要计算两点半-三点半之间数据&#xff0c;则需要重新计算&#xff09; Kappa -过于依赖kafka消…

FPGA:基于复旦微FMQL10S400 /FMQL20S400 国产化核心板

复旦微电子是国内集成电路设计行业的领军企业之一&#xff0c;早在2000年就在香港创业板上市&#xff0c;成为行业内首家上市公司。公司的RFID芯片、智能卡芯片、EEPROM、智能电表MCU等多种产品在市场上的占有率位居行业前列。 今天介绍的是搭载复旦微 FMQL10S400/FMQL20S400的…

01数据结构 - 顺序表

这里是只讲干货不讲废话的炽念&#xff0c;这个系列的文章是为了我自己以后复习数据结构而写&#xff0c;所以可能会用一种我自己能够听懂的方式来描述&#xff0c;不会像书本上那么枯燥和无聊&#xff0c;且全系列的代码均是可运行的代码&#xff0c;关键地方会给出注释^_^ 全…

C++客户端Qt开发——常用控件(容器类控件)

6.容器类控件 ①GroupBox 带标题分组框 属性 说明 title 分组框的标题 alignment 分组框内部内容的对齐方式 flat 是否是"扁平"模式 checkable 是否可选择 设为true,则在title前方会多出一个可勾选的部分. check 描述分组框的选择状态&#xff08;前提…

数据结构(5.1)——树的性质

结点数总度数1 结点的度——结点有几个孩子(分支) 度为m的树、m叉树的区别 度为m的树第i层至多有 个结点(i>1) 高度为h的m叉树至多有 个结点 高度为h的m叉树至少有h个结点 、高度为h&#xff0c;度为m叉树至多有hm-1个结点 具有n个结点的m叉树的最小高度为 总结

通过角点进行水果的果梗检测一种新方法

一、前言 在前面的《数字图像处理与机器视觉》案例一&#xff08;库尔勒香梨果梗提取和测量&#xff09;中主要使用数学形态学的方法进行果梗提取&#xff0c;下面给出一种提取果梗的新思路。 众所周知&#xff0c;一般果梗和果实在边缘处角度有较大突变&#xff0c;可以通过合…

spring security源码追踪理解(一)

一、前言 近期看了spring security相关的介绍&#xff0c;再加上项目所用若依框架的底层安全模块也是spring security&#xff0c;所以想从源码的角度加深下对该安全模块的理解&#xff08;看源码之前&#xff0c;我们要先有个意识&#xff0c;那就是spring security安全模块主…

第122天:内网安全-域信息收集应用网络凭据CS 插件AdfindBloodHound

目录 前置知识 背景和思路 判断是否在域内 案例一&#xff1a;架构信息类收集-网络&用户&域控等 案例二&#xff1a;自动化工具探针-插件&Adfind&BloodHound Adfind(域信息收集工具) ​BloodHound&#xff08;自动化域渗透工具&#xff09; 前置知识 本…

搭建个人智能家居 7 - 空气颗粒物检测

搭建个人智能家居 7 - 空气颗粒物检测 前言说明PMS5003ESPHomeHomeAssistant结束 前言 到目前为止&#xff0c;我们这个智能家居系统添加了4个外设&#xff0c;分别是&#xff1a;LED灯、RGB灯、DHT11温度传感器和SGP30。今天继续添加环境测量类传感器“PMS5003空气颗粒物检测…

Windows FFmpeg 开发环境搭建

FFmpeg 开发环境搭建 FFmpeg命令行环境搭建使用FFmpeg官方编译的库Windows编译FFmpeg1. 下载[msys2](https://www.msys2.org/#installation)2. 安装完成之后,将安装⽬录下的msys2_shell.cmd中注释掉的 rem set3. 修改pacman 镜像源并安装依赖4. 下载并编译源码 FFmpeg命令行环境…

基于springboot和mybatis的RealWorld后端项目实战三之添加swagger

pom.xml添加依赖 <dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger2</artifactId><version>2.9.2</version></dependency><dependency><groupId>io.springfox</groupId><arti…

解决网页中的 video 标签在移动端浏览器(如百度访问网页)视频脱离文档流播放问题

问题现象 部分浏览器视频脱离文档流&#xff0c;滚动时&#xff0c;视频是悬浮出来&#xff0c;在顶部播放 解决方案 添加下列属性&#xff0c;可解决大部分浏览器的脱离文档流的问题 <videowebkit-playsinline""playsInlinex5-playsinlinet7-video-player-t…

AI辅助自动驾驶技术在2024年的发展与趋势

文章目录 综述 2024 年 AI 辅助研发趋势 第一章&#xff1a;引言 1.1 背景介绍 1.2 AI在自动驾驶中的地位和作用 1.3 2024年自动驾驶技术的现状 1.4 论文结构 第二章&#xff1a;AI技术在自动驾驶中的应用 2.1 深度学习算法在自动驾驶中的应用 2.2 数据分析与模式识别…

谷类大米农业行业网站源码系统 带完整的安装代码包以及搭建部署教程

系统概述 在当今数字化时代&#xff0c;农业行业也逐渐迈向信息化、智能化。为了满足谷类大米农业行业的信息化需求&#xff0c;我们推出了一款专为该行业设计的网站源码系统。该系统不仅具备丰富的行业特色功能&#xff0c;而且提供了完整的安装代码包以及详细的搭建部署教程…

【Java算法】前缀和 下

&#x1f525;个人主页&#xff1a; 中草药 &#x1f525;专栏&#xff1a;【算法工作坊】算法实战揭秘 一.连续数组 题目链接&#xff1a;525.连续数组 代码 public int findMaxLength(int[] nums) {HashMap<Integer,Integer> mapnew HashMap<>();map.put(0,-1);…

Camera Raw:移去

Camera Raw 中的移去 Remove模块主要用于去除照片中的不需要的元素&#xff0c;比如污点、电线或其它干扰元素。 快捷键&#xff1a;B 移去面板中提供了三种移去模式&#xff1a;移除、修复以及仿制。 移除 Remove 通过智能算法和生成式 AI 来去除不需要的元素。 对象识别 Obje…

php 小白新手从入门到精通教程(第3版)

前言 PHP&#xff08;PHP: Hypertext Preprocessor&#xff09;即“超文本预处理器”&#xff0c;是在服务器端执行的脚本语言&#xff0c;尤其适用于Web开发并可嵌入HTML中。PHP语法学习了C语言&#xff0c;吸纳Java和Perl多个语言的特色发展出自己的特色语法&#xff0c;并根…