Heim > Datenbank > MySQL-Tutorial > Hauptteil

Was ist PreparedStatement in JDBC?

WBOY
Freigeben: 2023-09-11 09:09:09
nach vorne
1418 Leute haben es durchsucht

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));
Nach dem Login kopieren

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);
Nach dem Login kopieren

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");
Nach dem Login kopieren

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(): 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 ....");
   }
}
Nach dem Login kopieren

Ausgabe

Connection established......
Number of rows inserted: 1
Nach dem Login kopieren

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)
Nach dem Login kopieren

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!

Quelle:tutorialspoint.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!