PreparedStatementAntara muka memanjangkan antara muka Penyata, yang mewakili pernyataan SQL tersusun yang boleh dilaksanakan beberapa kali. Ia menerima pertanyaan SQL berparameter dan anda boleh menghantar 0 atau lebih parameter kepada pertanyaan ini.
Pada mulanya pernyataan ini menggunakan pemegang tempat "?" dan bukannya parameter, kemudian anda boleh menghantar parameter menggunakan setXXX( daripada kaedah PreparedStatement ) untuk melaksanakannya secara dinamik.
Anda boleh mencipta Penyata Disediakan (antara muka) menggunakan antara muka Sambungan #🎜🎜(🎜🎜(🎜)#prepare kaedah. Kaedah ini menerima pertanyaan (diparameterkan) dan mengembalikan objek PreparedStatement. Apabila anda memanggil kaedah ini, objek Sambungan menghantar pertanyaan yang diberikan kepada pangkalan data untuk menyusun dan menyimpannya. Jika pertanyaan berjaya disusun, hanya objek yang dikembalikan.
Untuk menyusun pertanyaan, pangkalan data tidak memerlukan sebarang nilai, jadi anda boleh menggunakan (sifar atau lebih)
pemegang tempat(tanda soal ” ?”# 🎜🎜#) menggantikan nilai dalam pertanyaan. Sebagai contoh, jika terdapat jadual bernama Pekerja
dalam pangkalan data, ciptakannya menggunakan pertanyaan berikut.CREATE TABLE Employee(Name VARCHAR(255), Salary INT NOT NULL, Location VARCHAR(255));
//Creating a Prepared Statement String query="INSERT INTO Employee(Name, Salary, Location)VALUES(?, ?, ?)"; Statement pstmt = con.prepareStatement(query);
Kaedah ini menerima dua parameter, satu ialah nilai integer yang mewakili indeks kedudukan pemegang tempat, dan satu lagi ialah int, String, float, dsb. yang mewakili nilai yang anda perlu masukkan.
Anda boleh menggunakan kaedah penetap dalam contoh berikut untuk menetapkan nilai pemegang tempat bagi pernyataan yang dibuat di atas:pstmt.setString(1, "Amit"); pstmt.setInt(2, 3000); pstmt.setString(3, "Hyderabad"); pstmt.setString(1, "Kalyan"); pstmt.setInt(2, 4000); pstmt.setString(3, "Vishakhapatnam"); pstmt.setString(1, "Renuka"); pstmt.setInt(2, 5000); pstmt.setString(3, "Delhi"); pstmt.setString(1, "Archana"); pstmt.setInt(2, 15000); pstmt.setString(3, "Mumbai");
#🎜🎜 #Create Selepas objek PreparedStatement, anda boleh laksanakannya menggunakan salah satu kaedah
execute(), executeUpdate ()#🎜 🎜# dan executeQuery(). execute():
Kaedah ini melaksanakan pernyataan SQL statik biasa dalam objek pernyataan yang disediakan semasa dan mengembalikan nilai Boolean.strong>executeQuery():
Kaedah ini melaksanakan#🎜##🎜🎜🎜 #executeUpdate(): Kaedah ini melaksanakan pernyataan penyata SQL DML seperti memasukkan kemas kini atau padam dalam Prepared semasa. Ia mengembalikan nilai integer yang mewakili bilangan baris yang terjejas.
Contoh
Dalam contoh ini, kami cuba memasukkan nilai ke dalam jadual bernama "Pekerja" menggunakan pernyataan yang disediakan.import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.SQLException; public class PreparedStatementExample { public static void main(String args[]) throws SQLException { //Registering the Driver DriverManager.registerDriver(new com.mysql.jdbc.Driver()); //Getting the connection String mysqlUrl = "jdbc:mysql://localhost/testdb"; Connection con = DriverManager.getConnection(mysqlUrl, "root", "password"); System.out.println("Connection established......"); //Creating a Prepared Statement String query = "INSERT INTO Employees(Name, Salary, Location) VALUES (?, ?, ?)"; PreparedStatement pstmt = con.prepareStatement(query); pstmt.setString(1, "Amit"); pstmt.setInt(2, 3000); pstmt.setString(3, "Hyderabad"); pstmt.setString(1, "Kalyan"); pstmt.setInt(2, 4000); pstmt.setString(3, "Vishakhapatnam"); pstmt.setString(1, "Renuka"); pstmt.setInt(2, 5000); pstmt.setString(3, "Delhi"); pstmt.setString(1, "Archana"); pstmt.setInt(2, 15000); pstmt.setString(3, "Mumbai"); int num = pstmt.executeUpdate(); System.out.println("Rows inserted ...."); } }
Connection established...... Number of rows inserted: 1
+---------+--------+----------------+ | Name | Salary | Location | +---------+--------+----------------+ | Amit | 30000 | Hyderabad | | Kalyan | 40000 | Vishakhapatnam | | Renuka | 50000 | Delhi | | Archana | 15000 | Mumbai | +---------+--------+----------------+ 5 rows in set (0.00 sec)
Atas ialah kandungan terperinci Apakah PreparedStatement dalam JDBC?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!