前言
组合查询为什么难,我个人认为是运用到了语句的拼接、存储过程的使用、设计模式的运用,这方面的知识在平时运用的不多,大家不够熟悉,所以认为比较难。下面我带大家一点一点去剖析。
模板方法模式
模板方法模式:定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。
个人理解:比如考试,每个同学拿到的试题是一样的,但是交卷之后老师要进行批改,为什么要批改呢?是因为每个人的答案不一样。试题是父类,每个人的答案是子类。可以变相的认为每一道题是一个虚方法,学生答题之后即对父类中的虚方法进行重写。
存储过程
定义:Stored Procedure是在大型数据库系统中,一组为了完成特定功能的SQL语句集,存储过程在数据库中,经过第一次编译后调用不需要再次编译,用户通过指定存储过程中的名字并给出参数(如果该存储过程带有参数)来执行它。
通俗解释:存储过程就是一个语句集,在使用的时候只需要指定存储过程名,给参数就可以使用。(注意:如果小伙伴们要创建存储过程,需要把alter改成create)
USE [charge_sys]
GO
/****** Object: StoredProcedure [dbo].[PROC_GroupFind] Script Date: 2019/2/15 18:33:15 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[PROC_GroupFind]
@CmbName1 varchar(50),
@CmbName2 varchar(50),
@CmbName3 varchar(50),
@CmbOper1 varChar(10),
@CmbOper2 varChar(10),
@CmbOper3 varChar(10),
@CmbGroup1 varchar(50),
@CmbGroup2 varchar(50),
@GetDataTable varchar(50),
@txtInfo1 varchar(50),
@txtInfo2 varchar(50),
@txtInfo3 varchar(50)
AS
declare @TempSql varchar(500)
BEGIN
SET @TempSql='Select * from '+@GetDataTable+' Where'+CHAR(32)+@CmbName1+@CmbOper1 +CHAR(39)+@txtInfo1 +CHAR(39)
if (@CmbGroup1!='')
BEGIN
SET @TempSql =@TempSql +CHAR(32) +@CmbGroup1 +CHAR(32)+@CmbName2 +@CmbOper2 +CHAR(39)+@txtInfo2 +CHAR(39)
if (@CmbGroup2!='')
begin
SET @TempSql =@TempSql +CHAR(32)+@CmbGroup2 +CHAR(32)+@CmbName3 +@CmbOper3 +CHAR(39)+@txtInfo3 +CHAR(39)
end
END
exec(@TempSql)
END
组合查询——逻辑判断
if (CmbRelation1.Text == "")
{
if (CmbName1.Text == "" || CmbMark1.Text == "" || txtInfo1.Text == "")
{
MessageBox.Show("第一行查询条件为空,请添加条件");
}
}
else if (CmbRelation1.Text != "")
{
if (CmbName1.Text == "" || CmbMark1.Text == "" || txtInfo1.Text == "" || CmbName2.Text == "" || CmbMark2.Text == "" || txtInfo2.Text == "")
{
MessageBox.Show("第二行查询条件为空,请添加条件");
}
}
else if (CmbRelation2.Text != "")
{
if (CmbName1.Text == "" || CmbMark1.Text == "" || txtInfo1.Text == "" || CmbName2.Text == "" || CmbMark2.Text == "" || txtInfo2.Text == "" || CmbName3.Text == "" || CmbMark3.Text == "" || txtInfo3.Text == "")
{
MessageBox.Show("第三行查询条件为空,请添加条件");
}
}
感受
解决问题必备要求:思路清晰+不骄不躁+一步一个脚印