zoukankan      html  css  js  c++  java
  • SqlServer 多条件查询 [存储过程] 经典例子结合C#的使用

    表中的字段:

    CREATE TABLE [dbo].[stuInfo] (
    [FNumber] [int] IDENTITY(1,1) NOT NULL ,
    [FName] [nvarchar] (30) COLLATE Chinese_PRC_CI_AS NOT NULL ,
    [FNameen] [varchar] (35) COLLATE Chinese_PRC_CI_AS  ,
    [FSex] [char] (1) COLLATE Chinese_PRC_CI_AS NOT NULL ,
    [FEducation] [char] (1) COLLATE Chinese_PRC_CI_AS NOT NULL ,
    [FCardID] [char] (18) COLLATE Chinese_PRC_CI_AS NOT NULL ,
    [FBirDate] [datetime] NOT NULL ,
    [FTech] [nvarchar](50) COLLATE Chinese_PRC_CI_AS ,
    [FSubject] [nvarchar](50) COLLATE Chinese_PRC_CI_AS,
    [FJiF] [nvarchar](100)COLLATE Chinese_PRC_CI_AS,
    [FJobAdd][nvarchar](100)COLLATE Chinese_PRC_CI_AS,
    [FExamNum][varchar](30)COLLATE Chinese_PRC_CI_AS NOT NULL,
    [FServerNum] [varchar] (30) COLLATE Chinese_PRC_CI_AS NOT NULL ,
    [FExamDate] [datetime] NOT NULL ,
    [FIsAE] [char] (1) COLLATE Chinese_PRC_CI_AS NOT NULL 
    ) ON [PRIMARY]
    GO

    存储过程:

    IF EXISTS(SELECT *FROM SYSOBJECTS WHERE NAME='PROC_Look')
    DROP PROC  PROC_Look
    GO
    CREATE PROC PROC_Look
    
    @FName  NVARCHAR(30)=NULL,
    @FNameen VARCHAR(35)=NULL,
    @FCardID CHAR(18)=NULL,
    @FExamNum NVARCHAR(30)=NULL,
    @FServerNum NVARCHAR(30)=NULL,
    @FSex  CHAR(1)=NULL,
    @FEducation CHAR(1)=NULL,
    @FIsAE  CHAR(1)=NULL,
    @FTech  NVARCHAR(50)=NULL,
    @FSubject NVARCHAR(50)=NULL,
    @FJiF  NVARCHAR(100)=NULL,
    @FJobAdd NVARCHAR(100)=NULL,
    @FStartTime DATETIME=NULL,
    @FEndTime DATETIME=NULL
    
      
    AS
    declare @sqlStr varchar(100)
            
    if @FName IS NOT NULL
    begin
      set @sqlStr=' where FName='+''''+@FName+'''' 
    end
            
    if @FNameen IS NOT NULL
    begin
        if @sqlStr IS NOT NULL
            set @sqlStr=@sqlStr+' and FNameen='+''''+@FNameen+'''' 
        else
      set @sqlStr=' where FNameen='+''''+@FNameen+''''
    end
        
    if @FCardID IS NOT NULL
    begin
      if @sqlStr IS NOT NULL
      set @sqlStr=@sqlStr+' and FCardID='+''''+@FCardID+'''' 
      else
      set @sqlStr=' where FCardID='+''''+@FCardID+''''
    end
    
    if @FExamNum IS NOT NULL
    begin
      if @sqlStr IS NOT NULL
      set @sqlStr=@sqlStr+' and FExamNum='+''''+@FExamNum+''''
      else
      set @sqlStr=' where FExamNum='+''''+@FExamNum +''''
    end
    
    if @FServerNum IS NOT NULL
    begin
      if @sqlStr IS NOT NULL
      set @sqlStr=@sqlStr+' and FServerNum='+''''+@FServerNum+''''
      else
      set @sqlStr=' where FServerNum='+''''+@FServerNum+''''
    end
    
    if @FSex IS NOT NULL
    begin
      if @sqlStr IS NOT NULL
      set @sqlStr=@sqlStr+' and FSex='+''''+@FSex+''''
      else
      set @sqlStr=' where FSex='+''''+@FSex+''''
    end
    
    if @FEducation IS NOT NULL
    begin
      if @sqlStr IS NOT NULL
      set @sqlStr=@sqlStr+' and FEducation='+''''+@FEducation+''''
                            
                            
      else
      set @sqlStr=' where FEducation='+''''+@FEducation+''''
      
    end 
    if @FIsAE IS NOT NULL
    begin
      if @sqlStr IS NOT NULL
      set @sqlStr=@sqlStr+' and FIsAE='+''''+@FIsAE+''''
                            
      else
      set @sqlStr=' where FIsAE='+''''+@FIsAE+''''
                            
    end
    if @FTech IS NOT NULL
    begin
      if @sqlStr IS NOT NULL
      set @sqlStr=@sqlStr+' and FTech='+''''+@FTech+''''
      else
      set @sqlStr=' where FTech='+''''+@FTech+''''
    end
    
    if @FSubject IS NOT NULL
      begin
      if @sqlStr IS NOT NULL
        set @sqlStr=@sqlStr+' and FSubject='+''''+@FSubject+''''
      else
        set @sqlStr=' where FSubject='+''''+@FSubject +''''
      end
    if @FJiF IS NOT NULL
    begin
      if @sqlStr IS NOT NULL
      set @sqlStr=@sqlStr+' and FJiF='+''''+@FJiF+'''' 
      else
      set @sqlStr=' where FJiF='+''''+@FJiF+''''
    end
    if @FJobAdd IS NOT NULL
    begin
      if @sqlStr IS NOT NULL
      set @sqlStr=@sqlStr+' and FJobAdd='+''''+@FJobAdd +''''
      else
      set @sqlStr=' where FJobAdd='+''''+@FJobAdd +''''
    end
    EXEC('select *from stuInfo '+ @sqlStr)
    GO
    

    可以在SQL SERVER查询分析器里,执行该存储过程并跟踪@sqlStr

    EXEC PROC_LOOK Herbert
    

    下面的代码演示如何在C#里面使用上面的存储过程

    string source = "Server = (local); Database = Students; Integrated Security = SSPI";
                SqlConnection conn = new SqlConnection(source);
                conn.Open();
    
                SqlCommand cmd = new SqlCommand("PROC_Look", conn);
                cmd.CommandType = CommandType.StoredProcedure;
                cmd.Parameters.Add(new SqlParameter("@FName", SqlDbType.NVarChar, 30, "FName"));
                
                cmd.Parameters.Add(new SqlParameter("@FNameen", SqlDbType.NVarChar, 35, "FNameen"));
                cmd.Parameters.Add(new SqlParameter("@FCardID", SqlDbType.Char, 18, "FCardID"));
                cmd.Parameters.Add(new SqlParameter("@FExamNum", SqlDbType.NVarChar, 30, "FExamNum"));
                cmd.Parameters.Add(new SqlParameter("@FServerNum", SqlDbType.NVarChar, 30, "FServerNum"));
                cmd.Parameters.Add(new SqlParameter("@FSex", SqlDbType.Char, 1, "FSex"));
                cmd.Parameters.Add(new SqlParameter("@FEducation", SqlDbType.Char, 1, "FEducation"));
                cmd.Parameters.Add(new SqlParameter("@FIsAE", SqlDbType.Char, 1, "FIsAE"));
                cmd.Parameters.Add(new SqlParameter("@FTech", SqlDbType.NVarChar, 50, "FTech"));
                cmd.Parameters.Add(new SqlParameter("@FSubject", SqlDbType.NVarChar, 50, "FSubject"));
                cmd.Parameters.Add(new SqlParameter("@FJiF", SqlDbType.NVarChar, 100, "FJiF"));
                cmd.Parameters.Add(new SqlParameter("@FJobAdd", SqlDbType.NVarChar, 100, "FJobAdd"));
                cmd.Parameters.Add(new SqlParameter("@FStartTime", SqlDbType.DateTime, 0, "FStartTime"));
                cmd.Parameters.Add(new SqlParameter("@FEndTime", SqlDbType.DateTime, 0, "FEndTime"));
    
                cmd.Parameters["@FName"].Value = "Herbert";
    
                SqlDataReader rdr = cmd.ExecuteReader();
                BindingSource bs = new BindingSource();
                bs.DataSource = rdr;
                this.dataGridView1.DataSource = bs;
                conn.Close();  
    

    这里在dataGridView1里面就可以显示返回结果了。

  • 相关阅读:
    JaunsGraph数据模型
    JanusGraph的schema及数据建模
    JanusGraph Server配置
    JanusGraph与Cassandra集成模式
    cassandra的primary key, partition key, cluster key,
    Predix Asset Service深度分析
    Predix中模型设计
    web工程中web.xml元素加载顺序以及配置实例
    Tomcat,Jboss,Glassfish等web容器比较选型
    intelliJ idea像eclipse一样在class中断点调试
  • 原文地址:https://www.cnblogs.com/herbert/p/1782320.html
Copyright © 2011-2022 走看看