2016-09-29 362 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

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

相关问题