日期:2014-05-20  浏览次数:21122 次

求教:为什么代码执行到 stmt.executeUpdate() 就诡异的停止了??
现在做的作业中,我自己写了一个工具类 DbUtils。
其中有一个 update 方法如下:

Java code

/**
     * 执行 SQL INSERT, UPDATE, DELETE 操作
     * 
     * @param sql
     *            需要执行的语句,按照 PreparedStatement 格式写
     * @param objects
     *            需要的参数
     * @return 影响的行数
     */
    public static int update(String sql, Object... objects) {

        for (Object o : objects)
            System.out.println(o);

        Connection conn = null;
        PreparedStatement stmt = null;
        int flag = -1;

        try {
            conn = getConnection();
            stmt = conn.prepareStatement("update r_acc_info_t set f_mail_zone='3' where f_acc_id='1'");

            // Oracle 10g 中的Jar包居然不支持,汗一个
            // ParameterMetaData pm = stmt.getParameterMetaData();
            
//            int count = StringUtils.countMatches(sql, "?");
//            
//            // 如果传入的是 objects 为 null,则不需要匹配参数
//            if (objects != null) {
//                // 如果传入的 objects 大于 sql 中需要的参数
//                if (objects.length > count) {
//                    return flag;
//                }
//                // fill the PreparedStatement
//                for (int i = 0; i < count; i++) {
//                    stmt.setObject(i + 1, objects[i]);
//                }
//            }

            flag = stmt.executeUpdate();

        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            closeAll(null, stmt, conn);
        }

        return flag;
    }



上面一段被注释掉是因为我想使用 Junit 测试,使用断点发现,代码执行到 flag = stmt.executeUpdate() 就不动了,JUnit 还在跑,没有抛出异常,也没有看到红绿色条。

------解决方案--------------------
debug工具繁忙,稍微等一会儿。
若还是不行,停了服务,然后重新debug。
再不行,重启机器试试。
------解决方案--------------------
命令行添加好使不
------解决方案--------------------
把控制台的异常贴出了,会容易知道错误