【发布时间】:2014-05-20 18:17:08
【问题描述】:
我正在使用准备好的语句以下列方式进行插入:
String query = "Insert into ROLE (ROLEID,ROLENAME,TYPEID,UPDATETIMESTAMP) values (?,?,?,?)";
Class.forName(driver);
conn = DriverManager.getConnection(url, userName, password);
preparedStatement = conn.prepareStatement(query);
preparedStatement.setInt(1, 0);
preparedStatement.setString(2, roleName);
preparedStatement.setInt(3, roleId);
preparedStatement.setTimestamp(4,null);
preparedStatement.executeUpdate();
这里 ROLEID 是主键,并通过某个触发器在内部由序列更新。
我关心的是插入后我需要获取已插入的 ROLEID。我可以使用 select * from order by ROLEID desc 之类的查询,但如果我找出这个准备好的语句使用的特定 id 会更好。
有什么建议吗?
【问题讨论】:
-
另一种方法是使用数据库存储过程进行插入并从 Java 调用存储过程。存储过程应该有一个 OUT 参数,它只是你的
ROLEID。因此,您拥有更大的灵活性并将所有数据库逻辑保留在后端。