我想批量更新表数据
我在java中采用拼写sql的办法,把n条update语句组合起来,但是,我想,每条update语句之间需要加个换行符号
可是,却没有用,是不是,我做的不对哦?squery = " update T_TRAN_BUSI_LIMIT SET F_ORDER="
                        + bean.getOrder() + " WHERE F_BUSI_NUM='"
                        + bean.getBusNum().replaceAll("'", "''")
                        + "' AND F_LIMIT_KEY='"
                        + bean.getLimitKey().replaceAll("'", "''") + "'\n";
                sql=sql+squery;我每次拼写出的的sql,总是把\n当作字符了,而不是换行符号了

解决方案 »

  1.   

    1.不用加\n就行,没有必要
    2.最好用StringBuilder做连接,而不是用String
      

  2.   

    就JDBC来说有个 Statement 有个方法就是批处理一组更新操作 java.sql 
    接口 StatementaddBatch
    void addBatch(String sql)
                  throws SQLException将给定的 SQL 命令添加到此 Statement 对象的当前命令列表中。通过调用方法 executeBatch 可以批量执行此列表中的命令。 
    参数:
    sql - 通常此参数为 SQL INSERT 或 UPDATE 语句 
    抛出: 
    SQLException - 如果发生数据库访问错误,在已关闭的 Statement 上调用此方法,或者驱动程序不支持批
    量更新
    从以下版本开始: 
    1.2 
    另请参见:
    executeBatch(), DatabaseMetaData.supportsBatchUpdates()executeBatch
    int[] executeBatch()
                       throws SQLException将一批命令提交给数据库来执行,如果全部命令执行成功,则返回更新计数组成的数组。返回数组的 int 元素的排序对应于批中的命令,批中的命令根据被添加到批中的顺序排序。方法 executeBatch 返回的数组中的元素可能为以下元素之一: 
    大于等于 0 的数 - 指示成功处理了命令,是给出执行命令所影响数据库中行数的更新计数 
    SUCCESS_NO_INFO 的值 - 指示成功执行了命令,但受影响的行数是未知的 
    如果批量更新中的命令之一无法正确执行,则此方法抛出 BatchUpdateException,并且 JDBC 驱动程序可能继续处理批处理中的剩余命令,也可能不执行。无论如何,驱动程序的行为必须与特定的 DBMS 一致,要么始终继续处理命令,要么永远不继续处理命令。如果驱动程序在某一次失败后继续进行处理,则 BatchUpdateException.getUpdateCounts 方法返回的数组将包含的元素与批中存在的命令一样多,并且其中至少有一个元素将为: 
    EXECUTE_FAILED 的值 - 指示未能成功执行命令,仅当命令失败后驱动程序继续处理命令时出现 
    在 Java 2 SDK, Standard Edition, 1.3 版中已经修改了可能的实现和返回值,以适应抛出 BatchUpdateException 对象后在批量更新中继续处理命令的选项。 
    返回:
    包含批中每个命令的一个元素的更新计数所组成的数组。数组的元素根据将命令添加到批中的顺序排序。 
    抛出: 
    SQLException - 如果发生数据库访问错误,在已关闭的 Statement 上调用此方法,或者驱动程序不支持批
    量语句。如果未能正确执行发送到数据库的命令之一或者尝试返回结果集合,则抛出 BatchUpdateException
    (SQLException 的子类)。
    从以下版本开始: 
    1.3 
    另请参见:
    addBatch(java.lang.String), DatabaseMetaData.supportsBatchUpdates()
      

  3.   

    貌似sql语句之间用';'隔开就行
      

  4.   

    换行符最好用 \r\n不过,一般 sql 语句是用分号分开的另外,楼主没必要把几条 sql 语句拼在一起,如果需要连续执行多个 sql 语句,可以使用事务
      

  5.   

    楼主sql中的参数最好不要直接拼容易被SQL注入攻击,用PreparedStatement中的setObject(int parameterIndex, Object x)设置参数
      

  6.   

    顶楼主的写法很容易产生 SQL 注入漏洞21世纪都已经过去快十年了,如果这个时候开发出来的系统还存在 SQL 注入漏洞,是要被打屁屁的