public boolean transfer(String inCardNO, String outCardNO,double money) {
boolean falg = false;
int[] count = null;
// 给转到的账户上增加金额
String sql1 = "update account set balance=balance+? where cardNo="+inCardNO;
// 给转出的账户上减少金额
String sql2 = "update account set balance=balance-? where cardNo="+outCardNO;
connection = getConnection();
try {
connection.setAutoCommit(false);
preparedStatement.clearBatch();
preparedStatement = connection.prepareStatement(sql1);
preparedStatement.setDouble(1, money);
preparedStatement.addBatch();
preparedStatement.clearParameters();
preparedStatement = connection.prepareStatement(sql2);
preparedStatement.setDouble(1, money);
preparedStatement.addBatch();
connection.commit();
count = preparedStatement.executeBatch();
connection.setAutoCommit(true);

} catch (SQLException e) {
// TODO Auto-generated catch block
try {
connection.rollback();
} catch (SQLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
e.printStackTrace();
} finally {
closeAll(resultSet, preparedStatement, connection);
}
if (count != null)
falg = true;
return falg;
}上边的代码中,特别是红色字体部分  哪位大虾哥哥可以帮小弟看看 有什么问题? 怎么改正?

解决方案 »

  1.   

    connection.commit();
    count = preparedStatement.executeBatch();顺序不对,execute之后再commit
      

  2.   

    connection.commit();
    count = preparedStatement.executeBatch();
    应该是先批处理executeBatch 再commit.
      

  3.   

    /**
     * 转账
     * 
     * @return
     */
    public boolean transfer(String inCardNO, String outCardNO, double money) {
    boolean falg = false;
    int[] count = null;
    // 给转到的账户上增加金额
    String sql1 = "update account set balance=balance+? where cardNo="
    + inCardNO;
    // 给转出的账户上减少金额
    String sql2 = "update account set balance=balance-? where cardNo="
    + outCardNO;
    connection = getConnection();
    try {
    connection.setAutoCommit(false);
    preparedStatement = connection.prepareStatement(sql1);
    preparedStatement.clearBatch();
    preparedStatement.setDouble(1, money);
    preparedStatement.addBatch();
    preparedStatement.clearParameters();
    preparedStatement = connection.prepareStatement(sql2);
    preparedStatement.setDouble(1, money);
    preparedStatement.addBatch();
    count = preparedStatement.executeBatch();
    connection.commit();
    connection.setAutoCommit(true);
    } catch (SQLException e) {
    // TODO Auto-generated catch block
    try {
    connection.rollback();
    } catch (SQLException e1) {
    // TODO Auto-generated catch block
    e1.printStackTrace();
    }
    e.printStackTrace();
    } finally {
    closeAll(resultSet, preparedStatement, connection);
    }
    if (count != null)
    falg = true;
    return falg;
    } public boolean updatePwd(String pwd, String cardNo) {
    boolean falg = false;
    int count = 0;
    String sql = "update account set pwd='" + pwd + "' where cardNo='"
    + cardNo + "'";
    connection = getConnection();
    try {
    preparedStatement = connection.prepareStatement(sql);
    count = preparedStatement.executeUpdate();
    } catch (SQLException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    } finally {
    closeAll(resultSet, preparedStatement, connection);
    }
    if (count > 0)
    falg = true;
    return falg;
    }
    改过了  最后返回的是true  但是sql中的结果并没有修改
        郁闷死嘞...