由于没有正确使用Connection.setAutoCommit(false)而导致SQL语句没有被提交

症状:

  提交了Form,执行insert操作,经过Debug也确认PreparedStatement.executeUpdate()返回值>0,但是在MySQL中直接查询表,返回的仍然是Empty Set.没有Exception被抛出。

原因:

  DAO Object在执行PreparedStatement.executeUpdate()之前,调用了Connection.setAutoCommit(false),而由于程序的逻辑关系,没有调用Connection.commit()就返回了,所以实际上数据并没有被写入数据库。但是也没有报错。因为PreparedStatement.executeUpdate()返回值>0,故Action也没有跳转到出错页面。

解决:

  修改程序逻辑结构即可。在此就不赘述,主要记录一下产生问题的根源。

原文地址:https://www.cnblogs.com/qrlozte/p/3621520.html