我正在使用 Statement.RETURN_GENERATED_KEYS
为了解决以下问题:在数据库中插入一行,然后通过执行一个新的select来检索它的id之后,有时找不到该行—不知何故,该信息没有到达数据库。
我猜这个标志确保在执行下一行代码之前将数据提交到数据库。如果是:
是吗 Statement.RETURN_GENERATED_KEYS
影响绩效?让没有这个标志的执行速度更快?
标志如何影响sql语句处理?
[编辑]-我使用mysql server作为db,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();
}
暂无答案!
目前还没有任何答案,快来回答吧!