程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程解疑 >> java-JAVA中使用JDBC做批量處理時,沒有報錯,但是數據沒有插入數據庫

java-JAVA中使用JDBC做批量處理時,沒有報錯,但是數據沒有插入數據庫

編輯:編程解疑
JAVA中使用JDBC做批量處理時,沒有報錯,但是數據沒有插入數據庫
@Override
public void addAllEmp(List<Employee> employees) {
    Connection conn = null;
    PreparedStatement pst = null;
    try {
        conn = JDBCUtil.getConnect();
        conn.setAutoCommit(false);
        pst = conn.prepareStatement("insert into jdbc_emp values(jdbc_emp_id.nextval,?,?,?");
        int count = 0;
        for (Employee employee : employees) {
            pst.setString(1, employee.getName());
            pst.setString(2, employee.getPassword());
            pst.setDouble(3, employee.getSal());
            count++;
            if (count==100) {
                //執行批處理
                pst.executeBatch();
                //清空參數
                pst.clearParameters();
                count = 0;
            }
        }
        pst.executeBatch();
        conn.commit();
    } catch (ClassNotFoundException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (SQLException e) {
        /*if (conn != null) {
            try {
                conn.rollback();
            } catch (SQLException e1) {
                e1.printStackTrace();
            }
        }*/
        // TODO Auto-generated catch block
        e.printStackTrace();
    }finally{
        JDBCUtil.close(conn, pst);
    }

最佳回答:


試下下面代碼。

1,insert語句後面漏了個 )
2,追加 pst.addBatch();

@Override
    public void addAllEmp(List<Employee> employees) {
        Connection conn = null;
        PreparedStatement pst = null;
        try {
            conn = JDBCUtil.getConnect();
            conn.setAutoCommit(false);

            // add ")" for missing
            // pst = conn.prepareStatement(
            // "insert into jdbc_emp values(jdbc_emp_id.nextval,?,?,?");
            pst = conn.prepareStatement(
                    "insert into jdbc_emp values(jdbc_emp_id.nextval,?,?,?)");

            int count = 0;
            for (Employee employee : employees) {
                pst.setString(1, employee.getName());
                pst.setString(2, employee.getPassword());
                pst.setDouble(3, employee.getSal());
                // add addBatch()
                pst.addBatch();
                count++;
                if (count == 100) {
                    // 執行批處理
                    pst.executeBatch();
                    // 清空參數
                    pst.clearParameters();
                    count = 0;
                }
            }
            pst.executeBatch();
            conn.commit();
        } catch (ClassNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (SQLException e) {
            /*
             * if (conn != null) { try { conn.rollback(); } catch (SQLException
             * e1) { e1.printStackTrace(); } }
             */
            // TODO Auto-generated catch block
            e.printStackTrace();
        } finally {
            JDBCUtil.close(conn, pst);
        }
    }

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved