JDBC 獲取被插入資料的主鍵ID值

劍握在手發表於2013-12-06

除了用儲存過程還有以下方法可以獲取:

 

 

static int create() throws SQLException {
    Connection conn = null;
    PreparedStatement ps = null;
    ResultSet rs = null;
    try {
        // 2.建立連線
        conn = JdbcUtils.getConnection();
        // conn = JdbcUtilsSing.getInstance().getConnection();
        // 3.建立語句
        String sql = "insert into user(name,birthday, money) values ('name2 gk', '1987-01-01', 400) ";
        ps = conn.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS);//引數2最好寫上,雖然Mysql不寫也能獲取但是不代表別的資料庫可以做到
        ps.executeUpdate();

        rs = ps.getGeneratedKeys();
        int id = 0;
        if (rs.next())
            id = rs.getInt(1);
        return id;
    } finally {
        JdbcUtils.free(rs, ps, conn);
    }
}

 

 

 


getGeneratedKeys
ResultSet getGeneratedKeys()
                           throws SQLException
獲取由於執行此 Statement 物件而建立的所有自動生成的鍵。如果此 Statement 物件沒有生成任何鍵,則返回空的 ResultSet 物件。

注:如果未指定表示自動生成鍵的列,則 JDBC 驅動程式實現將確定最能表示自動生成鍵的列。

返回:
包含通過執行此 Statement 物件自動生成的鍵的 ResultSet 物件
丟擲:
SQLException - 如果發生資料庫訪問錯誤,或者在已關閉的 Statement 上呼叫此方法
SQLFeatureNotSupportedException - 如果 JDBC 驅動程式不支援此方法
從以下版本開始:
1.4

相關文章