Bagikan melalui


Menggunakan beberapa tataan hasil

Unduh driver JDBC

Saat bekerja dengan prosedur tersimpan SQL atau SQL Server sebaris yang mengembalikan lebih dari satu tataan hasil, Driver Microsoft JDBC untuk SQL Server menyediakan metode getResultSet di kelas SQLServerStatement untuk mengambil setiap set data yang dikembalikan. Selain itu, saat menjalankan pernyataan yang mengembalikan lebih dari satu kumpulan hasil, Anda dapat menggunakan metode eksekusi kelas SQLServerStatement, karena akan mengembalikan nilai boolean yang menunjukkan apakah nilai yang dikembalikan adalah kumpulan hasil atau jumlah pembaruan.

Jika metode eksekusi mengembalikan true, pernyataan yang dijalankan telah mengembalikan satu atau beberapa tataan hasil. Anda dapat mengakses hasil pertama yang ditetapkan dengan memanggil metode getResultSet. Untuk menentukan apakah lebih banyak tataan hasil tersedia, Anda dapat memanggil metode getMoreResults, yang mengembalikan nilai boolean true jika lebih banyak tataan hasil tersedia. Jika lebih banyak tataan hasil tersedia, Anda dapat memanggil metode getResultSet lagi untuk mengaksesnya, melanjutkan proses hingga semua tataan hasil telah diproses. Jika metode getMoreResults mengembalikan false, tidak ada lagi tataan hasil untuk diproses.

Jika metode eksekusi mengembalikan false, pernyataan yang dijalankan telah mengembalikan nilai jumlah pembaruan, yang dapat Anda ambil dengan memanggil metode getUpdateCount .

Catatan

Untuk informasi selengkapnya tentang jumlah pembaruan, lihat Menggunakan prosedur tersimpan dengan jumlah pembaruan.

Dalam contoh berikut, koneksi terbuka ke database sampel AdventureWorks2022 diteruskan ke fungsi, dan pernyataan SQL dibangun bahwa, saat dijalankan, mengembalikan dua kumpulan hasil:

public static void executeStatement(Connection con) {
    try (Statement stmt = con.createStatement();) {
        String SQL = "SELECT TOP 10 * FROM Person.Contact; SELECT TOP 20 * FROM Person.Contact";

        boolean results = stmt.execute(SQL);
        int rsCount = 0;

        // Loop through the available result sets.
        do {
            if (results) {
                ResultSet rs = stmt.getResultSet();
                rsCount++;

                // Show data from the result set.
                System.out.println("RESULT SET #" + rsCount);
                while (rs.next()) {
                    System.out.println(rs.getString("LastName") + ", " + rs.getString("FirstName"));
                }
            }
            System.out.println();
            results = stmt.getMoreResults();
        } while (results);
    }
    // Handle any errors that may have occurred.
    catch (SQLException e) {
        e.printStackTrace();
    }
}

Dalam hal ini, jumlah kumpulan hasil yang dikembalikan diketahui dua. Namun, kode ditulis sehingga jika sejumlah set hasil yang tidak diketahui dikembalikan, seperti saat memanggil prosedur tersimpan, semuanya akan diproses. Untuk melihat contoh panggilan prosedur tersimpan yang mengembalikan beberapa kumpulan hasil bersama dengan nilai pembaruan, lihat Menangani pernyataan kompleks.

Catatan

Saat Anda melakukan panggilan ke metode getMoreResults dari kelas SQLServerStatement, kumpulan hasil yang dikembalikan sebelumnya ditutup secara implisit.

Lihat juga

Menggunakan pernyataan dengan driver JDBC