我正在使用tomcat连接池和MySQL JDBCconnector
我得到一个插件并且想要返回的键值。这是这样做的:
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,因为它成功了吗?
答案 0 :(得分: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
}
这样,如果两者都成功,则只提交对数据库的更改。