前言
组合查询做为查询的难点之一,没有一点点小思想是真的不好做。不过我们不在思想上作斗争,直接下手干就行了,不然永远会拖着,这样不但思想不高,行动也是个矮子。上篇博客为大家介绍了什么是存储过程,以及他的有点,这次我们做实例!!!模板方法相信大家都学过了设计模式,对模板方法也有一定的了解,毕竟我们在做项目的时候不止一次用到组合查询,所以利用模板方法做一个父类,其他子类直接就可以继承使用了。
存储过程
USE [Login]
GO
/****** Object: StoredProcedure [dbo].[PROC_GroupCheck] Script Date: 2019/6/30 16:10:51 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: 张家煦 <Author,,Name>
-- Create date: <Create Date,,>2019-6-25
-- Description: <Description,,>组合查询时候进行数据交互
-- =============================================
ALTER PROCEDURE [dbo].[PROC_GroupCheck]
/*需要传递的参数*/
@cboField1 varchar(20),
@cboField2 varchar(20),
@cboField3 varchar(20),
@cboMark1 varchar(10),
@cboMark2 varchar(10),
@cboMark3 varchar(10),
@Content1 varchar(20),
@Content2 varchar(20),
@Content3 varchar(20),
@Relationship1 varchar(10),
@Relationship2 varchar(10),
@DbtableName varchar(20)
AS
declare @TempSql varchar(500)
BEGIN
SET @TempSql='SELECT * FROM '+@DbtableName+' WHERE '+@cboField1+@cboMark1+char(39)+@Content1+char(39)
if(@Relationship1 !='')
BEGIN
SET @TempSql =@TempSql+@Relationship1 +CHAR(32)+@cboField2 +@cboMark2+CHAR(39)+@Content2+CHAR(39)
if(@Relationship2!='')
BEGIN
SET @TempSql=@TempSql+@Relationship2+CHAR(32)+@cboField3+@cboMark3+char(39)+@Content3+char(39)
END
END
ExECUTE(@TempSql)
END
模板的创建
将所有组合查询窗体公用的代码放到父类,其余均在子窗体实现
实体层
public class GroupFindTemplate
{
public string cboField1 { get; set; }
public string cboField2 { get; set; }
public string cboField3 { get; set; }
public string cboMark1 { get; set; }
public string cboMark2 { get; set; }
public string cboMark3 { get; set; }
public string Content1 { get; set; }
public string Content2 { get; set; }
public string Content3 { get; set; }
public string Relationship1 { get; set; }
public string Relationship2 { get; set; }
public string DbtableName { get; set; }
}
D层
//实例化数据操作类,进行数据查询,并获取返回值
SQLHelper sqlhelper = new SQLHelper();
public DataTable GroupFindtemplate(Enitity.GroupFindTemplate groupfind)
{
SqlParameter[] sqlParams = { new SqlParameter("@cboField1", groupfind.cboField1),
new SqlParameter("@cboField2", groupfind.cboField2),
new SqlParameter("@cboField3", groupfind.cboField3),
new SqlParameter("@cboMark1",groupfind.cboMark1),
new SqlParameter("@cboMark2",groupfind.cboMark2),
new SqlParameter("@cboMark3",groupfind.cboMark3),
new SqlParameter("@Content1",groupfind.Content1),
new SqlParameter("@Content2",groupfind.Content2),
new SqlParameter("@Content3",groupfind.Content3),
new SqlParameter("@Relationship1",groupfind.Relationship1),
new SqlParameter("@Relationship2",groupfind.Relationship2),
new SqlParameter("@DbtableName",groupfind.DbtableName)
};
//调用存储过程
string sql = @"PROC_GroupCheck";
DataTable table = sqlhelper.ExecuteQuery(sql, sqlParams, CommandType.StoredProcedure);
return table;
}