Mengapakah pernyataan yang disediakan lebih cepat daripada pernyataan dalam JDBC? jelaskan?

WBOY
Lepaskan: 2023-08-26 17:57:06
ke hadapan
789 orang telah melayarinya

为什么 JDBC 中的准备语句比语句更快?解释?

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.

Contoh

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)");
Salin selepas log masuk

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();
Salin selepas log masuk

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!

sumber:tutorialspoint.com
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan