首页 > 代码库 > c#解决数据库用in的时候大于1000报错问题
c#解决数据库用in的时候大于1000报错问题
问题:
//oracle数据库报错delete from DD_ORDER_DETAIL where ORDERID=in(0,1,2,3,4,5,6,7.....1001);
c#写了一个方法解决
/// <summary> /// 拼接sql /// </summary> /// <param name="str">主sql语句</param> /// <param name="ids">要拼接的in里面的参数</param> /// <param name="count">每次执行条数</param> /// <returns></returns> public static string get(string str, string[] ids) { if (ids.Length > 0) { StringBuilder sb = new StringBuilder(); for (int i = 0; i < ids.Length; i++) { if ((i % 1000) == 0 && i > 0) { sb.Remove(sb.Length - 1, 1); sb.Append(") or " + str + "in(" + ids[i] + ","); } else { sb.Append(ids[i] + ","); } } sb.Remove(sb.Length - 1, 1); return str + "in(" + sb.ToString() + ")"; } return ""; }
调用如下
static void Main(string[] args) { string str = "delete from DD_ORDER_DETAIL where ORDERID ="; string[] s = { }; List<string> list = new List<string>(); for (int i = 0; i < 1001; i++) { list.Add(i.ToString()); } s = list.ToArray(); ; Console.WriteLine(s.Length); string ss = get(str, s); Console.ReadKey(); }
效果如下
c#解决数据库用in的时候大于1000报错问题
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。