在向一个表中插入一条记录时,往往需要更新与其相关的其他表的值,此时就需要获取刚插入记录的ID,但是直接查询是查询不到刚插入的那条记录的,这时可以有两种方法解决此问题。
一、可以采用select max(id) from paper这条语句,但是如果多个人同时在操作数据库,得到的结果不一定是自己刚刚插入的那一条,所以这种方法不适合并行操作。
二、第二种方法可以采用MySQL自带的select_insert_Id()语句。具体实现方法如下:
String sql = "insert into paper(title,language) values(?,?)";这里没有直接用到select_insert_id(),而是用了将其封装的 PreparedStatement方法,
String a[]={title,language};
DB db = new DB();
Connection conn = db.getCon();
PreparedStatement pstmt = conn.prepareStatement(sql,PreparedStatement.RETURN_GENERATED_KEYS);
for (int i = 0; i < a.length; i++) {
pstmt.setObject(i+1, a[i]);
}
pstmt.executeUpdate();
int pid=-1;
ResultSet rs = pstmt.getGeneratedKeys();
if(rs.next())
{
pid=rs.getInt(1);
}
PreparedStatement.RETURN_GENERATED_KEYS这一代码使与你要插入的sql语句共同作为PreparedStatement的参数,然后使用<pre name="code" class="html">pstmt.getGeneratedKeys();来获得记录集,最后通过<span style="font-family: Arial, Helvetica, sans-serif;">rs.getInt(1);获得最新插入的一行的ID1。</span>