zoukankan      html  css  js  c++  java
  • sql语句用'in'执行多条语句时候,执行错误的解决方法

    一般报错是出现,无法将nvarchar类型转换为int类型 这是因为 SqlParameter  带参数  是不能用  , 分割的.

    第一种解决方法就是  不用 SqlParameter  带参数的sql语句  但是  有危险

     第二种就是

    一 在数据库  执行   下面代码  创建一个函数

        CREATE   FUNCTION   [dbo].[f_split](@c   varchar(2000),@split   varchar(2))  
      returns   @t   TABLE(col   varchar(20))  
      AS  
        begin  
          while(charindex(@split,@c)<>0)  
            begin  
              INSERT   @t(col)   VALUES   (substring(@c,1,charindex(@split,@c)-1))  
              SET   @c   =   stuff(@c,1,charindex(@split,@c),'')  
            end  
          INSERT   @t(col)   VALUES   (@c)  
          RETURN  
        end  
    GO
        

    第二 把原先的用in的sql语句

    select * from DataTb where Number in (1,2,3)

    改成

     select * from DataTb where Number in (select * from dbo.f_split('1,2,3',','))

    这样就可以了 

    上  实际代码 一个update的方法

    s 是要修改的state的内容

    str 是用checkbox或者什么  选择提出出来的 如:  1,2,3  类型的字符串

      public void Update(string str, string s)
            {
                string sql = "update DataTb set [State]=@s where Number in(select * from dbo.f_split(@str,','))";
                SqlParameter[] pars =  
                {
                    new SqlParameter("@s",s),
                    new SqlParameter("@str",str)
                };
                SqlHelper.ExecuteNonQuery(sql, pars);
            }

    ExecuteNonQuery  方法在这个SqlHelper 里面!

  • 相关阅读:
    Pycharm5注册方式
    五、监听共享目录文件
    三、python webservice
    二、Python安装扩展库
    一、Python安装下载
    test
    拖延
    要乐观对待生活
    乞讨者
    不要总是指责和埋怨
  • 原文地址:https://www.cnblogs.com/crazyair/p/3674952.html
Copyright © 2011-2022 走看看