Lấy ID trả về khi insert (thêm) một dòng vào database

Trong bài viết này, tôi sẽ hướng dẫn các bạn cách để lấy ID trả về khi insert một dòng vào database với một số hệ quản trị  cơ sở dữ liệu thườn dùng.

Một số hoạt động của cơ sở dữ liệu, đặc biệt là các mối quan hệ giữa parent-child (one-to-many), bạn có thể muốn thêm một bản ghi vào bảng cha trước, sau đó vào bảng con. Nhưng các bản ghi trong bảng con phải có khoá ngoại liên quan đến khoá chính của bảng cha. Trong trường hợp này, bạn cần một kỹ thuật lấy ra giá trị khoá chính của bản ghi cuối cùng được chèn vào (thường tự động tăng lên bởi công cụ cơ sở dữ liệu A_I). JDBC cung cấp cơ chế như vậy nhưng việc thực hiện hơi khác với các hệ thống cơ sở dữ liệu khác nhau.

Đối với cơ sở dữ liệu Derby MySQL trong Java, sử dụng mã sau:

String sql = "YOUR INSERT STATEMENT HERE";
 
PreparedStatement ps = conn.prepareStatement(sql,
        Statement.RETURN_GENERATED_KEYS);
 
ps.execute();
 
ResultSet rs = ps.getGeneratedKeys();
int generatedKey = 0;
if (rs.next()) {
    generatedKey = rs.getInt(1);
}
 
System.out.println("Inserted record's ID: " + generatedKey);

Đối với cơ sở dữ liệu Oracle, sử dụng mã sau:

PreparedStatement statement = conn.prepareStatement(sql,
        Statement.RETURN_GENERATED_KEYS);
 
statement.execute();
 
PreparedStatement ps = connection
        .prepareStatement("select your_table_id_sequence.currval from dual");
 
ResultSet rs = ps.executeQuery();
if (rs.next()) {
    generatedKey = (int) rs.getLong(1);
}
 
System.out.println("Inserted record's ID: " + generatedKey);

Lưu ý: đối với cơ sở dữ liệu Oracle, bạn nên tạo một chuỗi cho khoá chính của bảng.

0 0 đánh giá
Đánh giá bài viết
Theo dõi
Thông báo của
guest
0 Góp ý
Phản hồi nội tuyến
Xem tất cả bình luận
x