Heim >Datenbank >MySQL-Tutorial >Was ist PreparedStatement in JDBC?
Die
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.
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);
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 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:
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 ...."); } }
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!