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

  • 相关阅读:
    sql 查询重复数据 删除重复数据
    echarts 仪表板指针点击事件
    Java调用webservice 天气预报
    性能优化高手 一站通关从设计到交付的性能问题
    element-ui 添加空白表格
    Linux文件管理
    Linux第五周
    Linux第四周
    Linux第三周
    Linux第二周
  • 原文地址:https://www.cnblogs.com/crazyair/p/3674952.html
Copyright © 2011-2022 走看看