使用JAVA复制一个表数据并将其插入到同一数据库中的另一个表中?
问题描述:
我想从一个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();
}
答
以下代码将起作用。如果你提到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
谢谢,你救了我的一天。 –
您是否收到任何错误或任何其他错误提示?除此之外,你为什么不使用['INSERT ... SELECT'](https://dev.mysql.com/doc/refman/5.7/en/insert-select.html)在数据库上做这件事? – Thomas
你遇到什么错误?关闭连接之前使用提交 – user5478656
。 con.close(); con.commit(); – Prasath