Masalahnya adalah dengan cara Anda mengambil data di getStuff()
. Setiap kali Anda mengunjungi getStuff()
Anda mendapatkan ResultSet
fresh yang baru tapi kamu tidak menutupnya.
Ini melanggar harapan Statement
kelas (lihat di sini - http://docs. oracle.com/javase/7/docs/api/java/sql/Statement.html
):
Secara default, hanya satu objek ResultSet per objek Pernyataan yang dapat dibuka secara bersamaan. Oleh karena itu, jika pembacaan satu objek ResultSet disisipkan dengan pembacaan yang lain, masing-masing harus dihasilkan oleh objek Pernyataan yang berbeda. Semua metode eksekusi di antarmuka Pernyataan secara implisit menutup objek ResultSet saat ini dari pernyataan jika ada yang terbuka.
Yang memperburuk keadaan adalah rs
dari kode panggilan. Itu juga diturunkan dari statement
lapangan tetapi tidak ditutup.
Intinya:Anda memiliki beberapa ResultSet
berkaitan dengan Statement
yang sama objek dibuka secara bersamaan.