• 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 里面!

  • 相关阅读:
    1074. Reversing Linked List (25)
    1056. Mice and Rice (25)
    1051. Pop Sequence (25)
    1001. A+B Format (20)
    1048. 数字加密(20)
    1073. Scientific Notation (20)
    1061. Dating (20)
    1009. 说反话 (20)
    MyBatis学习总结(8)——Mybatis3.x与Spring4.x整合
    MyBatis学习总结(8)——Mybatis3.x与Spring4.x整合
  • 原文地址:https://www.cnblogs.com/crazyair/p/3674952.html
Copyright © 2020-2023  润新知