SqlCommand cmd5 = new SqlCommand("Select * from StuInfo where stuXueyuan like '%" + txt_select.Text + "%' or stuName like '%"
  + txt_select.Text + "%' or stuID like '%" + txt_select.Text + "%' or stuMajor like '%" + txt_select.Text + "%' or stuSex like '%" + txt_select.Text + "%' or stuPhone like '%" + txt_select.Text + "%'", conn);SQL关键间注意空格

解决方案 »

  1.   

    在调试的时候,把拼接的sql放到sql查询中运行,看看报什么错误,然后修改。
      

  2.   

    我昨晚还成功来哈~~不知道怎么弄得 今天怎么运行就是不成功 我也感觉是sql语句之间的空格有问题 但是有找不出来 所以希望各位高手能帮小弟找一找~~~~
      

  3.   


    1. 先把 sql查询语句 写到一个临时的text中
    2. 看看有没有问题
    3. 看不出来的话 最好用sqlServer执行看看行不行
      

  4.   

    你这个代码太乱了,先用变量整起,再调试
    String keyWord=txt_select.Text;
    String sql="select count(*) from StuInfo where stuXueyuan like '%" +keyWord+ "%' or stuName like '%"+keyWord+"%';
    stuXueyuan,这种变量最好不要有,换成stuDepart
      

  5.   

     like 前后都加空格
      

  6.   

    把你手动生成的SQL语句去数据中执行一下看是否正确
      

  7.   

    你这查询也太闹心了吧
    给你个存储过程set ANSI_NULLS ON
    set QUOTED_IDENTIFIER ON
    go--[gjss]  10,20,'a','','','','','',''ALTER procedure [dbo].[gjss] 
    (
    @startIndex int=1,
    @endIndex int=3286,
    @ProductName varchar(100)=NULL,
    @Inputer varchar(50)=NULL,
    @ProductStandard  varchar(100)=NULL,
    @PriceOriginal varchar(20)=NULL,
    @ISBN varchar(20)=NULL,
    @CreateTimeStart varchar(20)=NULL,
    @CreateTimeEnd varchar(20)=NULL,
    @PrintNO varchar(20)=NULL,       
    @VersionNO  varchar(20)=NULL
    )
    as
    SET NOCOUNT ON   
    begin
    declare @start int
    declare @end int
    declare @SqlWhere varchar(500)
    declare @strSql varchar(1000)
    declare @strSql1 varchar(1000)set @start= @startIndex * @endIndex
    set @end =@start+@endIndex
    set @SqlWhere=' where 1=1 '
    if  @PrintNO<>''
    begin
     set @SqlWhere=@SqlWhere+' and  PrintNO = '''+@PrintNO+''''
    end
    if  @VersionNO<>''
    begin
     set @SqlWhere=@SqlWhere+' and  VersionNO = '''+@VersionNO+''''
    end
    if @ProductName<>'' 
    begin
     set @SqlWhere=@SqlWhere+' and  ProductName like ''%'+@ProductName+'%'''
    end
    if @Inputer<>'' 
    begin
     set @SqlWhere=@SqlWhere+' and  Inputer like ''%'+@Inputer+'%'''
    end
    if @ProductStandard<>'' 
    begin
     set @SqlWhere=@SqlWhere+' and  ProductStandard like ''%'+@ProductStandard+'%'''
    end
    if @PriceOriginal<>'' 
    begin
     set @SqlWhere=@SqlWhere+' and  PriceOriginal like ''%'+@PriceOriginal+'%'''
    end
    if @ISBN<>'' 
    begin
     set @SqlWhere=@SqlWhere+' and  ISBN = '''+@ISBN+''''
    end
    if @CreateTimeStart <>'' 
    begin
     set @SqlWhere=@SqlWhere+' and  CreateTime >= '''+@CreateTimeStart+''''
    end
    if @CreateTimeEnd <>''
    begin
     set @SqlWhere=@SqlWhere+' and  CreateTime <= '''+@CreateTimeStart+''''
    end
    set @strSql='select temptbl.* from ( SELECT ROW_NUMBER() OVER (ORDER BY productId asc)AS Row,*

       from My_Products            '
    set @strSql1=') as temptbl where temptbl.Row > '+cast(@start as varchar(10)) +' and temptbl.Row<='+cast(@end  as varchar(10))
    set @strSql=@strSql+@SqlWhere+@strSql1
    exec(@strSql)
    print @strSqlset @strSql='select count(productId) from My_Products '+@SqlWhere 
    exec(@strSql)
    print @strSql

    end
      

  8.   

    给你看看我做了一个简单的模糊查询。你的SQL语句很容易出错,他们说先放到数据库查询找错是个办法,你可以优化你SQL语句。
    public DataTable GetShuji(string text)
           {           string sql = "select * from dbo.View_1 where Title like @title";
               List<SqlParameter> list = new List<SqlParameter>();
               SqlParameter sp = new SqlParameter("@title",SqlDbType.VarChar);
               sp.Value = "%" + text + "%";
               list.Add(sp);
               DataSet ds = server.GetResult(sql, list);
               if (ds != null && ds.Tables[0].Rows.Count > 0)
               {
                   return ds.Tables[0];
               }
               else
               {
                   return null;
               }
           }