我正在开发一个需要从文本文件更新数据库的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方面没有发生任何事情。
答案 0 :(得分:2)
您需要关闭连接才能刷新对数据库的更改。
尝试在管道中的某处添加connection.close();
,通常关闭finally块中的连接以确保它始终处于关闭状态,但看起来您已在其他地方定义了连接,可能是为了在调用函数中重用。
您还需要在关闭连接之前关闭语句。有关模式,请参阅this similar answer。