重构机房组合查询之学生基本信息查询

2024-06-08 20:08

本文主要是介绍重构机房组合查询之学生基本信息查询,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

         之前第一遍机房收费系统,组合查询虽然做出来了,但是感觉很乱,云里雾里的。这次重构版,又重新理清了思路,但是按照自己思路走着走着就碰到了障碍:在SQL语句“SELECT * from Student where 字段 操作符 @查询内容 ”中,如果用变量代替字段、变量代替操作符的时候,就会出现非布尔类型的错误,意思是三个变量虽然替换了字段、操作符和查询内容,但是由于不是布尔类型的判定,比如“CardID”“=”“12345”这个不是布尔类型的,只是三个string放到了一起。解决方法就是利用存储过程实现动态SQL语句。 这是主界面:


下面是创建一个名字是proc_stuBasInfo的存储过程:

ALTER PROCEDURE [dbo].[proc_stuBasInfo]-- Add the parameters for the stored procedure here@Fields1 varchar(50),@Operators1 varchar(50),@Check1 varchar(50),@Relation1 varchar(50),@Fields2 varchar(50),@Operators2 varchar(50),@Check2 varchar(50),@Relation2 varchar(50),@Fields3 varchar(50),@Operators3 varchar(50),@check3 varchar(50)AS
declare @strSQL varchar(100)
BEGIN-- SET NOCOUNT ON added to prevent extra result sets from-- interfering with SELECT statements.set @strSQL='select * from student where' +char(32)+@Fields1 +char(32)+@Operators1  +char(32)+ @check1+char(32)+@Relation1 +char(32)+@Fields2 +char(32)+@Operators2  +char(32)+@Check2 +char(32)+@Relation2  +char(32)+@Fields3 +char(32)+@Operators3  +char(32)+@check3 
exec (@strSQL)
END
这个存储过程是把11个变量来拼接SQL语句的字符串,然后放到string类型的变量@strSQL中。再exec(@strSQL)就实现了根据变化的变量来实现不同的sql语句。从而就能达到三种情况组合查询的目的。

然后D层代码:

'组合查询Public Function GroupInquire(enstudent As ChargeEntity.Student) As List(Of ChargeEntity.Student) Implements [Interface].IStudent.GroupInquireDim GroupInquireSQLHelper As New ChargeDAL.SQLHelperDim GroupInquireMODHelper As New ChargeEntity.ModelHelperDim medt1 As DataTableDim mylist As New List(Of ChargeEntity.Student)strSQL = "proc_stubasinfo" '存储过程Dim sqlpara As SqlParameter() = {New SqlParameter("@Fields1", enstudent.Fields1),New SqlParameter("@Operators1", enstudent.Operators1),New SqlParameter("@Check1", enstudent.Check1),New SqlParameter("@Relation1", enstudent.Relation1),New SqlParameter("@Fields2", enstudent.Fields2),New SqlParameter("@Operators2", enstudent.Operators2),New SqlParameter("@Check2", enstudent.Check2),New SqlParameter("@Relation2", enstudent.Relation2),New SqlParameter("@Fields3", enstudent.Fields3),New SqlParameter("@Operators3", enstudent.Operators3),New SqlParameter("@Check3", enstudent.Check3)}medt1 = GroupInquireSQLHelper.ParaSelect(strSQL, CommandType.StoredProcedure, sqlpara)mylist = GroupInquireMODHelper.convertToList(Of ChargeEntity.Student)(medt1)Return mylistEnd Function
D层用实体enstudent来填充11个变量(字段3个、操作符3个、查询内容3个、组合关系2个)的值,并返回mylist。通过B层的判断在U层显示:

       '返回查询结果()Dim GroupInquireStuBas As New ChargeBLL.GroupInquireStuBasManagerDim mylist As List(Of ChargeEntity.Student)mylist = GroupInquireStuBas.GroupInquireStuBas(enstudent)If mylist.Count = 0 ThenMsgBox("没有信息")ElseDataGridView.DataSource = mylistEnd If
这样,就能在DataGridView中显示查询条件和查询内容了。




这篇关于重构机房组合查询之学生基本信息查询的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1043176

相关文章

房产证 不动产查询

陕西政务服务网(便民服务)陕西政务服务网(手机版?更直观)不动产权证书|不动产登记证明(电子证照)商品房合同备案查询权利人查询

mysql索引四(组合索引)

单列索引,即一个索引只包含单个列,一个表可以有多个单列索引,但这不是组合索引;组合索引,即一个索引包含多个列。 因为有事,下面内容全部转自:https://www.cnblogs.com/farmer-cabbage/p/5793589.html 为了形象地对比单列索引和组合索引,为表添加多个字段:    CREATE TABLE mytable( ID INT NOT NULL, use

通过高德api查询所有店铺地址信息

通过高德api查询所有店铺地址电话信息 需求:通过高德api查询所有店铺地址信息需求分析具体实现1、申请高德appkey2、下载types city 字典值3、具体代码调用 需求:通过高德api查询所有店铺地址信息 需求分析 查询现有高德api发现现有接口关键字搜索API服务地址: https://developer.amap.com/api/webservice/gui

SQL Server中,查询数据库中有多少个表,以及数据库其余类型数据统计查询

sqlserver查询数据库中有多少个表 sql server 数表:select count(1) from sysobjects where xtype='U'数视图:select count(1) from sysobjects where xtype='V'数存储过程select count(1) from sysobjects where xtype='P' SE

微信小程序开发必知必会:文件结构和基本配置

一、微信小程序基本文件结构 1.  project.config.json:项目的基本配置文件,包括项目名称、appid、项目目录、页面文件夹等。     {"setting": {"urlCheck": false,"es6": true,"postcss": true,"nodeModulesPath": "D:\\\\node_modules"},"appid": "wxd678e

Java中如何优化数据库查询性能?

Java中如何优化数据库查询性能? 大家好,我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿!今天我们将深入探讨在Java中如何优化数据库查询性能,这是提升应用程序响应速度和用户体验的关键技术。 优化数据库查询性能的重要性 在现代应用开发中,数据库查询是最常见的操作之一。随着数据量的增加和业务复杂度的提升,数据库查询的性能优化显得尤为重

BD错误集锦9——查询hive表格时出错:Wrong FS: hdfs://s233/user/../warehouse expected: hdfs://mycluster

集群环境描述:HDFS集群处于HA模式下,同时启动了YARN\JN\KAFKA\ZK。 现象: FAILED: SemanticException Unable to determine if hdfs://s233/user/hive/warehouse/mydb.db/ext_calllogs_in_hbase is encrypted: java.lang.IllegalArgument

PHP的基本语法有哪些?

PHP的基本语法包括以下几个方面: PHP标记:PHP脚本以<?php开始,以?>结束。这是PHP文件的默认文件扩展名是.php。 变量和常量:变量以$符号开头,其后是变量的名称。常量使用define()函数定义,例如define("常量名", 常量值);。 数据类型:PHP支持多种数据类型,如整型、浮点型、字符串型等。 注释:PHP支持单行注释(用//表示)和多行注释(用/* */表示

MybatisPlus指定字段查询

一,上代码 QueryWrapper<Device> queryWrapper = Wrappers.query();queryWrapper.select("project_id as projectId,count(device_id) as total").in("project_id",projectIds).isNotNull("project_id").eq("del_flag",B