由于没有正确使用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也没有跳转到出错页面。

 

解决:

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

你可能感兴趣的:(Connection)