Heim  >  Artikel  >  Datenbank  >  Was ist PreparedStatement in JDBC?

Was ist PreparedStatement in JDBC?

WBOY
WBOYnach vorne
2023-09-11 09:09:091451Durchsuche

Die

Was ist PreparedStatement in JDBC?

PreparedStatement-Schnittstelle erweitert die Statement-Schnittstelle, die eine vorkompilierte SQL-Anweisung darstellt, die mehrmals ausgeführt werden kann. Es akzeptiert eine parametrisierte SQL-Abfrage und Sie können dieser Abfrage 0 oder mehr Parameter übergeben.

Zunächst verwendet diese Anweisung Platzhalter "?" anstelle von Parametern. Später können Sie Parameter übergeben, um diese mithilfe der setXXX()-Methode der Schnittstelle PreparedStatement dynamisch zu implementieren.

Erstellen Sie ein PreparedStatement

Sie können ein PreparedStatement (Schnittstelle) mit der Methode prepareStatement() der Connection-Schnittstelle erstellen. Diese Methode akzeptiert eine Abfrage (parametrisiert) und gibt ein PreparedStatement-Objekt zurück.

Wenn Sie diese Methode aufrufen, sendet das Connection-Objekt die angegebene Abfrage an die Datenbank, um sie zu kompilieren und zu speichern. Wenn die Abfrage erfolgreich kompiliert wird, wird nur das Objekt zurückgegeben.

Zum Kompilieren der Abfrage benötigt die Datenbank keine Werte, daher können Sie (null oder mehr) Platzhalter (Fragezeichen “ ?) verwenden, um die Werte in der Abfrage zu ersetzen.

Wenn es beispielsweise eine Tabelle mit dem Namen Employee in der Datenbank gibt, erstellen Sie sie mit der folgenden Abfrage.

CREATE TABLE Employee(Name VARCHAR(255), Salary INT NOT NULL, Location VARCHAR(255));

Sie sollten dann in der Lage sein, mithilfe vorbereiteter Anweisungen Werte einzufügen, wie unten gezeigt.

//Creating a Prepared Statement
String query="INSERT INTO Employee(Name, Salary, Location)VALUES(?, ?, ?)";
Statement pstmt = con.prepareStatement(query);

Legen Sie den Wert des Platzhalters fest

PreparedStatementDie Schnittstelle bietet mehrere Setter-Methoden wie setInt(), setFloat(), setArray(), setDate(), setDouble() usw. zum Festlegen vorkompilierter Anweisungen Der Wert des Platzhalters.

Diese Methoden akzeptieren zwei Parameter, einer ist ein ganzzahliger Wert, der den Platzhalterpositionsindex darstellt, und der andere ist ein int, String, Float usw., der den Wert darstellt, den Sie einfügen müssen.

Sie können den Wert des Platzhalters für die oben erstellte Anweisung mithilfe der Setter-Methode im folgenden Beispiel festlegen:

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

Ausführen einer vorbereiteten Anweisung

Nach dem Erstellen des PreparedStatement-Objekts können Sie eines der execute() verwenden Methoden der PreparedStatement-Schnittstelle, um es auszuführen, nämlich execute(), executeUpdate() undexecuteQuery().

  • execute(): strong> Diese Methode führt eine normale statische SQL-Anweisung im aktuellen vorbereiteten Anweisungsobjekt aus und gibt einen booleschen Wert zurück.

  • executeQuery(): Diese Methode führt

  • executeUpdate(): Diese Methode führt SQL-DML-Anweisungsanweisungen wie „Insert Update“ oder „Delete“ im aktuellen Prepared aus. Es gibt einen ganzzahligen Wert zurück, der die Anzahl der betroffenen Zeilen darstellt.

Sie können die oben erstellte vorbereitete Anweisung wie folgt ausführen:

Beispiel

In diesem Beispiel versuchen wir, mithilfe vorbereiteter Anweisungen Werte in eine Tabelle mit dem Namen „Mitarbeiter“ einzufügen.

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

Ausgabe

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

Wenn Sie die Datenbank validieren, können Sie die in die Tabelle eingefügten Werte beobachten:

+---------+--------+----------------+
| Name    | Salary | Location       |
+---------+--------+----------------+
| Amit    | 30000  | Hyderabad      |
| Kalyan  | 40000  | Vishakhapatnam |
| Renuka  | 50000  | Delhi          |
| Archana | 15000  | Mumbai         |
+---------+--------+----------------+
5 rows in set (0.00 sec)

Das obige ist der detaillierte Inhalt vonWas ist PreparedStatement in JDBC?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:tutorialspoint.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen