Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Mendapatkan ID Sisipan dengan Cekap dalam JDBC?

Bagaimana untuk Mendapatkan ID Sisipan dengan Cekap dalam JDBC?

Mary-Kate Olsen
Lepaskan: 2025-01-23 18:48:11
asal
832 orang telah melayarinya

How to Efficiently Retrieve the Insert ID in JDBC?

Dapatkan ID sisipan dalam JDBC dengan cekap

Apabila memasukkan data ke dalam jadual pangkalan data menggunakan JDBC, anda selalunya perlu mendapatkan kunci yang dijana (atau ID sisipan), yang mengenal pasti rekod yang baru ditambah. JDBC menyediakan mekanisme untuk mendapatkan ID ini dengan cekap.

Gunakan Pernyataan#getGeneratedKeys()

Untuk kunci yang dijana secara automatik, JDBC menyediakan kaedah Statement#getGeneratedKeys(). Kaedah ini dipanggil pada pernyataan yang sama yang menjalankan operasi INSERT. Untuk membolehkan penjanaan kunci, pernyataan mesti dibuat dengan bendera Statement.RETURN_GENERATED_KEYS.

<code class="language-java">public void create(User user) throws SQLException {
    try (
        Connection connection = dataSource.getConnection();
        PreparedStatement statement = connection.prepareStatement(SQL_INSERT,
                                      Statement.RETURN_GENERATED_KEYS);
    ) {
        statement.setString(1, user.getName());
        statement.setString(2, user.getPassword());
        statement.setString(3, user.getEmail());
        // ...

        int affectedRows = statement.executeUpdate();

        if (affectedRows == 0) {
            throw new SQLException("创建用户失败,没有影响行。");
        }

        try (ResultSet generatedKeys = statement.getGeneratedKeys()) {
            if (generatedKeys.next()) {
                user.setId(generatedKeys.getLong(1));
            }
            else {
                throw new SQLException("创建用户失败,未获得 ID。");
            }
        }
    }
}</code>
Salin selepas log masuk

Keserasian Pemandu

Kejayaan pendekatan ini bergantung pada sokongan pemandu JDBC. Kebanyakan pemacu JDBC moden menyokong ciri ini, termasuk MySQL, DB2, dan PostgreSQL. Walau bagaimanapun, pemandu Oracle JDBC mungkin masih mempunyai had dalam bidang ini.

Alternatif Oracle

Untuk Oracle, pertimbangkan untuk menggunakan CallableStatement atau pertanyaan PILIH dengan klausa RETURNING untuk mendapatkan kunci yang dijana terakhir.

<code class="language-sql">"{? = call INSERT_FUNCTION(?, ?, ?)}"</code>
Salin selepas log masuk

Pemegang tempat ? mewakili pembolehubah yang memegang ID sisipan.

Atas ialah kandungan terperinci Bagaimana untuk Mendapatkan ID Sisipan dengan Cekap dalam JDBC?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan