Rumah  >  Artikel  >  pangkalan data  >  Apakah PreparedStatement dalam JDBC?

Apakah PreparedStatement dalam JDBC?

WBOY
WBOYke hadapan
2023-09-11 09:09:091420semak imbas

Apakah PreparedStatement dalam JDBC?

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.

Buat Penyata Disediakan

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));
Anda sepatutnya boleh memasukkan nilai ke dalamnya menggunakan pernyataan yang disediakan seperti yang ditunjukkan di bawah.
//Creating a Prepared Statement
String query="INSERT INTO Employee(Name, Salary, Location)VALUES(?, ?, ?)";
Statement pstmt = con.prepareStatement(query);

Tetapkan nilai pemegang tempat

PreparedStatement

Antaramuka menyediakan beberapa kaedah penetap, seperti setInt(), setFloat(), setAr (), setDate(), setDouble(), dsb., digunakan untuk menetapkan nilai pemegang tempat penyata yang telah dikompilasi.

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");

Lakukan Penyata Disediakan

#🎜🎜 #Create Selepas objek PreparedStatement, anda boleh laksanakannya menggunakan salah satu kaedah

execute()

antara muka PreparedStatement, iaitu

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.

  • Anda boleh melaksanakan pernyataan yang disediakan di atas seperti berikut:

    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 ....");
       }
    }
Output

Connection established......
Number of rows inserted: 1

Jika anda mengesahkan pangkalan data, anda boleh melihat nilai yang dimasukkan dalam jadual:

+---------+--------+----------------+
| 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!

Kenyataan:
Artikel ini dikembalikan pada:tutorialspoint.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam