1

我正在使用带有连接池和 MySQL JDBCconnector 的 tomcat

我让我的连接进行插入并想要返回的键值。这样做是这样的:

conn = ds.getConnection();
stmt = conn.createStatement();
stmt.executeQuery("use "+dbname);
sql = sql.trim();
int res  = stmt.executeUpdate(sql);
if (sql.toLowerCase().startsWith("insert") ) {
    rs = stmt.getGeneratedKeys() ;
    if (rs.next())
    r=  rs.getString(1);
}

所以这一直很好,我得到了返回的 ID。

如果存在 DATA TRUNCATION EXCEPTION 则尽管插入成功,但我无法再获得返回键的值。所以我最终得到了我不知道的数据库中的值。

我需要摆脱异常或者改变我这样做的整个方式?

我可以修复进行更新的 bean 和 dbase 数据类型 - 但我想要一种带和大括号的方式来确保如果我没有正确完成此操作,我可以在成功时取回 ID?

4

1 回答 1

1

你可以用这样的东西包围你的整个部分

try{
  conn.setAutoCommit(false);
  //do stuff
  conn.commit();
}catch(Exception e){
  //failure logic
  try{
    conn.rollback();
  }catch(Exception e){
    //rollback fail logic
  }
  //more failure logic
}

这样,您只有在两者都成功的情况下才提交对数据库的更改。

于 2013-04-27T14:44:19.600 回答