我在数据库里建了一个表table
里面的字段与类型分别为:
id    int类型
name  nvarchar类型
然后我想执行这种的语句:
update table set [name]=@name where id in (@id)
比如:
update table set [name]='中国' where id in (1,2,3,5,9)现在的问题是:红色字体中的这些1,2,3,5,9这种的形式怎么在C#编程中得出来.而且还要跟id的类型相符合的呢?谢谢!!

解决方案 »

  1.   

    没有办法,用拼串吧。string strIdList = "1,2,3,5,9";
    string strSql = string.Format("update table set [name]='中国' where id in ({0})", strIdList);
      

  2.   

    这个一般都是用 checkbox得到这种样式!
    <form id="form1" name="form1" method="get" action="">
      <input type="checkbox" name="checkbox" value="1" />1
      <input type="checkbox" name="checkbox" value="2" />2
      <input type="checkbox" name="checkbox" value="3" />3
      <input type="checkbox" name="checkbox" value="4" />4
      <input type="checkbox" name="checkbox" value="5" />5
      <input type="checkbox" name="checkbox" value="6" />6
      <input type="checkbox" name="checkbox" value="7" />7
      <input type="checkbox" name="checkbox" value="8" />8
      <input name="" type="submit" />
    </form>像这个,得到的Request["checkbox"]就是这种样子的
      

  3.   

    试了一下.如果是用"拼串"的方式的话.那用在存储过程有错误喔.因为id是int类型,而"拼串"的话是string类型.
    这个怎么解决??
    谢谢!
      

  4.   

    你先把整个SQL语句当成是字符串,然后再用sp_executesql执行
      

  5.   

    @id
    这里只是一个参数
    如果要多个
    @id1,@id2,@id3
    这样
      

  6.   

    可以在存储过程里面实现
    先添加函数CREATE function My_split(@aString varchar(8000),@pattern varchar(10))
    returns @temp table([Sid]  [int] IDENTITY (1, 1) NOT NULL ,Myvalues varchar(100))
    --实现split功能的函数
    --说明:@aString,字符串,如“27,28,29”;@pattern,分隔标志,如“ ,”
    as 
    begin
        declare @i int
        set @aString=rtrim(ltrim(@aString))
        set @i=charindex(@pattern,@aString)
        while @i>=1
        begin
            insert @temp values(left(@aString,@i-1))
            set @aString=substring(@aString,@i+1,len(@aString)-@i)
            set @i=charindex(@pattern,@aString)
        end
        if @aString<>'' 
           insert @temp values(@aString)
        return 
    end 
    使用
    CREATE PROCEDURE PPPP @IDs varchar(300),@Which varchar(50) AS
     
    update TTTT set Deleted=1 where ID in (select Myvalues FROM my_split(@IDs, ','))
      

  7.   


    update   table   set   [name]='中国'   where   charindex(','+cast(id as varchar)+',',','+@id+',')>0