我正在使用Statement.RETURN_GENERATED_KEYS
来解决以下问题:在数据库中插入一行,然后通过执行新的select检索它的ID后,有时找不到该行-不知何故没有获得该信息到数据库。
我猜想这个标志将确保在执行下一行代码之前将数据提交到数据库。如果是这样:
Statement.RETURN_GENERATED_KEYS
是否会影响性能?让执行过程中没有该标志会更快执行吗?[编辑]-我将MySQL Server用作数据库,将c3p0用于连接池实现,将mysql-connector-java用于驱动程序。 浏览一下我所指的上下文,下面是一个代码段:
StringBuilder insertedId = new StringBuilder("");
DAOSession session = DAOSession.getInstance();
Connection conn = session.aquireTransaction();
Statement stm = null;
try {
stm = conn.createStatement();
stm.executeUpdate(sql, Statement.RETURN_GENERATED_KEYS);
} catch (SQLException e) {
e.printStackTrace();
} finally {
if (stm != null) {
// Find and return the generated key
try (ResultSet generatedKeys = stm.getGeneratedKeys()) {
if (generatedKeys.next()) {
insertedId.setLength(0);
insertedId.append(generatedKeys.getString(1));
} else {
// Log this scenario
}
}
stm.close();
}
conn.close();
}