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 に答える