Rumah > Artikel > pangkalan data > Mengapakah pernyataan yang disediakan lebih cepat daripada pernyataan dalam JDBC? jelaskan?
Apabila melaksanakan pernyataan menggunakan objek Pernyataan, terutamanya apabila memasukkan pernyataan, setiap kali pertanyaan dilaksanakan, keseluruhan pernyataan disusun dan dilaksanakan berulang kali, di mana satu-satunya perbezaan antara pernyataan adalah nilai kenyataan.
Walau bagaimanapun, penyata yang disediakan ialah penyata yang telah disusun terlebih dahulu, iaitu pertanyaan disusun dan disimpan dalam pangkalan data, menggunakan ruang letak (?) dan bukannya nilai, dan nilai ruang letak ini disediakan kemudian.Jadi, elakkan kompilasi dan kenyataan pelaksanaan yang tidak perlu lagi dan lagi.
Katakan, kita mempunyai jadual bernama Dataset dalam pangkalan data yang mengandungi columns mobile_brand dan unit_sale, jika kita ingin memasukkan rekod ke dalam jadual ini menggunakan objek pernyataan, kodnya adalah seperti berikut:
stmt.executeUpdate("insert into Dataset values('Iphone', 3000)"); stmt.executeUpdate("insert into Dataset values('Samsung', 4000)"); stmt.executeUpdate("insert into Dataset values('Nokia', 5000)"); stmt.executeUpdate("insert into Dataset values('Vivo', 1500)"); stmt.executeUpdate("insert into Dataset values('Oppo', 9000)"); stmt.executeUpdate("insert into Dataset values('MI', 6400)"); stmt.executeUpdate("insert into Dataset values('MotoG', 4360)"); stmt.executeUpdate("insert into Dataset values('Lenovo', 4100)"); stmt.executeUpdate("insert into Dataset values('RedMi', 4000)"); stmt.executeUpdate("insert into Dataset values('OnePlus', 6334)");
Untuk setiap panggilan kaedah executeUpdate(), keseluruhan pernyataan di dalamnya akan disusun dan dilaksanakan. Di sini jika anda memerhatikan bahawa hanya nilai penyata diubah manakala pertanyaan selebihnya disusun secara tidak perlu.
Jika anda menulis pertanyaan sisip menggunakan pernyataan yang disediakan untuk memasukkan data yang sama dalam jadual yang sama, kod tersebut akan kelihatan seperti ini:
PreparedStatement pstmt = con.prepareStatement("insert into Dataset values(?, ?)"); pstmt.setString(1, "Iphone"); pstmt.setInt(2, 3000); pstmt.executeUpdate(); pstmt.setString(1, "Samsung"); pstmt.setInt(2, 4000); pstmt.executeUpdate(); pstmt.setString(1, "Nokia"); pstmt.setInt(2, 5000); pstmt.executeUpdate(); pstmt.setString(1, "Vivo"); pstmt.setInt(2, 1500); pstmt.executeUpdate(); pstmt.setString(1, "Oppo"); pstmt.setInt(2, 900); pstmt.executeUpdate(); pstmt.setString(1, "MI"); pstmt.setInt(2, 6400); pstmt.executeUpdate(); pstmt.setString(1, "MotoG"); pstmt.setInt(2, 4360); pstmt.executeUpdate(); pstmt.setString(1, "Lenovo"); pstmt.setInt(2, 4100); pstmt.executeUpdate(); pstmt.setString(1, "RedMi"); pstmt.setInt(2, 4000); pstmt.executeUpdate(); pstmt.setString(1, "MotoG"); pstmt.setInt(2, 4360); pstmt.executeUpdate(); pstmt.setString(1, "OnePlus"); pstmt.setInt(2, 6334); pstmt.executeUpdate();
Di sini, jika anda perhatikan bahawa pertanyaan sisipan disediakan dengan pemegang tempat(?) , dan pertanyaan disusun dan disimpan dalam pangkalan data, dan nilai kemudiannya diluluskan menggunakan kaedah penetap antara muka PreparedStatement, dengan itu mengelakkan pelaksanaan pernyataan yang tidak perlu.
Atas ialah kandungan terperinci Mengapakah pernyataan yang disediakan lebih cepat daripada pernyataan dalam JDBC? jelaskan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!