rubbish-db / チュートリアル / 一意制約違反の例外をキャッチする


[ rubbish-db ]

ソース

RubbishDatabase dbh = new RubbishDatabase(new HsqldbExceptionFactory());
dbh.setLogging(true);

dbh.connect("jdbc:hsqldb:hsql://localhost", "sa", "");

Publisher publisher = new Publisher();
publisher.setId("00");
publisher.setName("御来利意書房");
publisher.setVolumes(new Integer(2));
publisher.setUpdate_date(new Date());
publisher.setCreate_date(new Date());

try {
    dbh.insert(publisher);
} catch (SQLUniqueException e) {
    System.out.println(e);
}

dbh.rollback();
dbh.disconnect();

結果

connect database 'url=jdbc:hsqldb:hsql://localhost, user=sa, password='.
'INSERT INTO PUBLISHER (CREATE_DATE, ID, NAME, UPDATE_DATE, VOLUMES) VALUES (?, ?, ?, ?, ?) [2005-09-11 11:04:44.650, 00, 御来利意書房, 2005-09-11 11:04:44.650, 2]'
rubbish.db.exception.SQLUniqueException: java.sql.SQLException: Unique constraint violation:  in statement [INSERT INTO PUBLISHER (CREATE_DATE, ID, NAME, UPDATE_DATE, VOLUMES) VALUES (?, ?, ?, ?, ?)] (error code=-104, SQLState=23000, SQL='INSERT INTO PUBLISHER (CREATE_DATE, ID, NAME, UPDATE_DATE, VOLUMES) VALUES (?, ?, ?, ?, ?) [2005-09-11 11:04:44.650, 00, 御来利意書房, 2005-09-11 11:04:44.650, 2]')
rollback transaction.
disconnect database.