设为首页 加入收藏

TOP

关于大数据批量更新的问题(一)
2013-01-09 13:41:18 来源: 作者: 【 】 浏览:494
Tags:关于 数据 批量 更新 问题

 

  //此处拼接要更新的列名及其参数值

  columnsUpdateSql += ("[" + columnsName[i] + "]" + "=@" + columnsName[i] + ",");

  paras[i] = new SqlParameter("@" + columnsName[i], columnsName[i]);

  }

  if (!string.IsNullOrEmpty(columnsUpdateSql))

  {

  //此处去掉拼接处最后一个","

  columnsUpdateSql = columnsUpdateSql.Remove(columnsUpdateSql.Length - 1);

  }

  //此处生成where条件语句

  string limitSql = ("[" + primaryKeyName + "]" + "=@" + primaryKeyName);

  SqlCommand updateCmd = new SqlCommand(string.Format(" UPDATE [{0}] SET {1} WHERE {2} ", TableName, columnsUpdateSql, limitSql));

  //不修改源DataTable

  updateCmd.UpdatedRowSource = UpdateRowSource.None;

  da.UpdateCommand = updateCmd;

  da.UpdateCommand.Parameters.AddRange(paras);

  da.UpdateCommand.Parameters.Add("@" + primaryKeyName, primaryKeyName);

  //每次往返处理的行数

  da.UpdateBatchSize = onceUpdateNumber;

  result = da.Update(ds,TableName);

  ds.AcceptChanges();

  tran.Commit();

  }

  catch

  {

  tran.Rollback();

  }

  finally

  {

  sqlconn.Dispose();

  sqlconn.Close();

  }

  }

  return result;

  }

  注:此方法调用时要传入的参数,包括主键名和列名都应与数据库实际的名称相对应。你可以不传入限定的where条件,如果传入,只需传入:Name="chamy" or Name="jundy",不需加入"where"等字符,不可以在此处传入主键的限定。你只需要在主键名这个参数上传入名称即可。

      

首页 上一页 1 2 下一页 尾页 1/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇各种版本的++、--原子操作 下一篇当C++遇到IOS应用开发

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: