我正在开发一个JAVA程序,需要从文本文件更新数据库。我已成功插入并更新数据。但我在这里遇到了这个方法的问题。查询运行没有错误并给出响应。但数据库表没有更新。
private void filteData() {
System.out.println("filteData");
Statement statementAtenLogInsert = null;
Statement statementqCheck = null;
Statement statementUpdateProLog = null;
Statement statementEnterError = null;
ResultSet rs = null;
int rcount;
//Update successfull attendance_test
String attenLogInsertSuccess = "INSERT INTO attendance_log (user_id, check_in, check_out) SELECT user_id, check_in, check_out FROM process_log WHERE flag = 'S'";
try {
statementAtenLogInsert = connection.createStatement();
statementAtenLogInsert.execute(attenLogInsertSuccess);
int qSuccess = statementAtenLogInsert.executeUpdate(attenLogInsertSuccess);
System.out.println("qSuccess " + qSuccess);
if(qSuccess > 0){
String deleteProcessLog = "DELETE FROM process_log WHERE flag = 'S'";
statementAtenLogInsert.execute(deleteProcessLog);
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
此处,attenLogInsertSuccess 和 deleteProcessLog 查询不起作用。意味着数据库表方面没有发生任何事情。但是 qSuccess 给了我一个值。这意味着 attenLogInsertSuccess 正在触发。但 mysql 方面什么也没发生。
最佳答案
您需要关闭连接才能将更改刷新到数据库。
尝试在管道中的某个位置添加connection.close();
,通常您在finally block 中关闭连接以确保它始终关闭,但看起来您已经在其他地方定义了连接,大概是为了在调用函数中重用。
您还需要在关闭连接之前关闭语句。参见 this similar answer对于模式。
关于java - MYSQL插入查询不更新数据到JAVA表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41776842/