2016-09-29 213 views
0

我想從一個MYSQL數據庫表中選擇一些數據,並使用JAVA將這些選定數據插入到同一個數據庫中的另一個表中。兩個表都有相同的結構。到目前爲止,我可以選擇數據,但我無法插入這些數據。使用JAVA複製一個表數據並將其插入到同一數據庫中的另一個表中?

測試test_t是表格。

item_id是表中唯一的一列。

我也想刪除測試表數據後我把它們插入test_t表。這個測試表就像一個臨時表。

這是我的方法。

private void testM() throws Exception { 

     pooler = DBPool_SF.getInstance(); 
     dataSource = pooler.getDataSource(); 
     Connection con = dataSource.getConnection(); 
     con.setAutoCommit(false); 

     PreparedStatement ps,ps1 = null; 
     ResultSet rs = null; 

     String SEL_QUERY = "select item_id from test"; 
     String UPDATE_QUERY = "insert into test_t values(?)"; 

     ps = con.prepareStatement(SEL_QUERY); 
     rs = ps.executeQuery(); 
     ps1 = con.prepareStatement(UPDATE_QUERY); 

     while (rs.next()) { 

      String id = rs.getString("item_id"); 
      System.out.println(id); 
      ps1.setString(1,id); 
      ps1.addBatch(); 
      } 

      ps1.executeBatch(); 
     con.close(); 
    } 
+0

您是否收到任何錯誤或任何其他錯誤提示?除此之外,你爲什麼不使用['INSERT ... SELECT'](https://dev.mysql.com/doc/refman/5.7/en/insert-select.html)在數據庫上做這件事? – Thomas

+0

你遇到什麼錯誤?關閉連接之前使用提交 – user5478656

+0

。 con.close(); con.commit(); – Prasath

回答

1

以下代碼將起作用。如果你提到setAutoCommit(false),那麼你需要在最後提交。

 con.setAutoCommit(false); 
     PreparedStatement ps, ps1 = null; 
     ResultSet rs = null; 
     Statement st = null; 

     String SEL_QUERY = "select item_id from test"; 
     String UPDATE_QUERY = "insert into test_t values(?)"; 
     String DELETE_QUERY = "delete from test"; 

     st = con.createStatement(); 
     ps = con.prepareStatement(SEL_QUERY); 
     rs = ps.executeQuery(); 
     ps1 = con.prepareStatement(UPDATE_QUERY); 

     while (rs.next()) 
     { 

      String id = rs.getString("item_id"); 
      System.out.println(" item_id : " + id); 
      ps1.setString(1, id); 
      ps1.addBatch(); 
     } 

     ps1.executeBatch(); 
     st.execute(DELETE_QUERY); 

     con.commit(); 
     con.close(); 
+0

謝謝,你救了我的一天。 –

相關問題