Apakah PreparedStatement dalam JDBC?

WBOY
Lepaskan: 2023-09-11 09:09:09
ke hadapan
1446 orang telah melayarinya

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

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

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.
  • 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 ....");
       }
    }
    Salin selepas log masuk
Output

Connection established......
Number of rows inserted: 1
Salin selepas log masuk

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

Atas ialah kandungan terperinci Apakah PreparedStatement dalam JDBC?. 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
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!