数据集绑定后生成table1TableAdapter这个家伙,方法是:Fill(@tb_zz);对应Select的CommandText为 select id,tnote,tname from table1 where (tb_zz in(@tb_zz))如果用Fill(dataset,"2")就正常并返回一条结果在SQL Server Profiler中看到的变量 @tb_zz = '2' 可是如果用Fill(dataset,"2,3")就没有结果返回在SQL Server Profiler中看到的变量 @tb_zz = '2,3' 而用Fill(dataset,"2','3")就没有结果返回在SQL Server Profiler中看到的变量 @tb_zz = '2'',''3' 
而用Fill(dataset,"2'',''3")就没有结果返回在SQL Server Profiler中看到的变量 @tb_zz = '2'''',''''3'
 变量中含有单引号在SQL语句中就会变成双引号,在变量前加个@或加个\ 还是单引号变双引号,试了好多次都没办法成功,请各位帮解决下!感谢感谢!

解决方案 »

  1.   

    直接用拼接sql语句的方法来吧,这样用参数我看是不行的
      

  2.   

    如果可以用存储过程,可以通过字符串过度一下,在存储过程里拼接    
      declare   @sql   varchar(300)   
      select   @sql   =  
      'select id,tnote,tname from table1 where (tb_zz in(' + @tb_zz + '))'  
      exec   sp_executesql   @sql   
        
      @tb_zz以下面这种格式传进去:'2','3'
      

  3.   


    可是这样就不能在数据集时直接绑定了啊,有没有更便捷的方法呢?
    有没有办法能将SQL中变量的单引号返回的也是单引号呢!!
      

  4.   

    不明白你的意思,你只要把
    Select的CommandText为 select id,tnote,tname from table1 where (tb_zz in(@tb_zz)) 改成一个不带@tb_zz的参数就可以了呀,这个字符串在代码里拼接好以后在用就行了。关键是不能用参数,要拼接,和绑定有什么关系?
      

  5.   

    我是想绑定后可以直接用update做添加修改删除我试下看,非常感谢!
      

  6.   


    好像绑定后的TableAdapter update DataGridView中的数据是一起修改的吧,具体我也搞不清楚,只是保存后是一起保存的。
    另你在上面说用拼成的SQL语句也行,可是拼成的语句我不知道怎么赋给TableAdapter的Selec中的CommandText,能说下吗?
      

  7.   

    就是个字符串赋值吧,先得到输入的值,然后给commandtext赋值。
    tb_zz="2,3"
    CommandText="select id,tnote,tname from table1 where (tb_zz in(" + tb_zz + "))"
      

  8.   

    不行的,this.table1TableAdapter.Adapter.SelectCommand.CommandText="select id,tnote,tname from table1 where (tb_zz in(" + tb_zz + "))"会提示“未将对象引用设置到对象的实例”!的错误
      

  9.   

    public DataSet GetData()
            {
                SqlConnection conn = new SqlConnection("连接字符串");
                conn.Open();
                string sqlText = "select id,tnote,tname from table1 where (tb_zz in(@tb_zz))";
                SqlCommand cmd = new SqlCommand(sqlText, conn);
                SqlParameter parameter = new SqlParameter("@tb_zz", SqlDbType.VarChar, 50);
                parameter.Value = "传进来对应tb_zz的值";
                cmd.Parameters.Add(parameter);
                conn.Close();
                SqlDataAdapter da = new SqlDataAdapter(cmd);
                DataSet ds = new DataSet();
                da.Fill(ds);
                return ds;
            }
      
    *****************************************************************************
    欢迎使用CSDN论坛专用阅读器 : CSDN Reader(附全部源代码) http://feiyun0112.cnblogs.com/
      

  10.   


    大哥是TableAdapter而不是SqlDataAdapter啊,绑定后已经生成一个table1TableAdapter的东西了,并且SelectCommand.CommandText有值,我想重新给SelectCommand.CommandText赋值啊!
    不过还是很感谢你的帮助!
      

  11.   

    @tb_zz in ( '2','3' );