Wenn Sie eine Statement-Schnittstelle verwenden, muss jede Anweisung, die Sie an die Datenbank senden, syntaktisch analysiert werden. Außerdem ist ein Zugriffsplan zu generieren und die Anweisung auszuführen. Die Schritte vor der eigentlichen Ausführung werden als Vorbereitung der Anweisung bezeichnet.
Sie können Performance-Vorteile erzielen, wenn Sie die PreparedStatement-Schnittstelle verwenden. Damit haben Sie die Möglichkeit, eine Anweisung mit Platzhaltern vorzubereiten, und dann beim Ausführen der Anweisung diesen Platzhaltern Werte zuzuordnen.
Der Einsatz von vorbereiteten Anweisungen ist besonders dann nützlich, wenn viele ähnliche Aktionen ausgeführt werden, wie etwa das Einfügen von vielen Zeilen.
Weitere Hinweise über vorbereitete Anweisungen finden Sie unter Anweisungen vorbereiten.
Das folgende Beispiel zeigt, wie die Schnittstelle PreparedStatement benutzt werden kann, obwohl das Einfügen einer einzelnen Zeile in der Praxis nicht mit vorbereiteten Anweisungen erfolgen sollte.
Die folgende InsertDynamic-Methode der Klasse JDBCExample führt eine vorbereitete Anweisung aus:
public static void InsertDynamic( Connection con, String ID, String name ) { try { // Build the INSERT statement // ? is a placeholder character String sqlStr = "INSERT INTO Departments " + "( DepartmentID, DepartmentName ) " + "VALUES ( ? , ? )"; // Prepare the statement PreparedStatement stmt = con.prepareStatement( sqlStr ); // Set some values int idValue = Integer.valueOf( ID ); stmt.setInt( 1, idValue ); stmt.setString( 2, name ); // Execute the statement int iRows = stmt.executeUpdate(); // Print the number of rows inserted System.out.println(iRows + " rows inserted"); } catch (SQLException sqe) { System.out.println("Unexpected exception : " + sqe.toString() + ", sqlstate = " + sqe.getSQLState()); } catch (Exception e) { e.printStackTrace(); } } |
Dieses Codefragment ist Teil der JDBCExample-Klasse, die im Verzeichnis Beispielverzeichnis\SQLAnywhere\JDBC enthalten ist.
Die Methode executeUpdate gibt eine Ganzzahl zurück, die die Anzahl der Zeilen ausdrückt, die von dem Vorgang betroffen waren. In diesem Fall würde ein erfolgreicher INSERT-Vorgang den Wert Eins (1) zurückgeben.
Bei der Ausführung als serverseitige Klasse erfolgt die Ausgabe von System.out.println
im Fenster "Datenbankservermeldungen".
Über Interactive SQL stellen Sie als Benutzer DBA eine Verbindung mit der Beispieldatenbank her.
Die Klasse JDBCExample muss installiert sein.
Weitere Hinweise, wie Sie die Java-Beispiele installieren können, finden Sie unter Vorbereitung der Beispiele.
Definieren Sie eine gespeicherte Prozedur namens JDBCInsert, die als Wrapper für die Methode JDBCExample.Insert in der Klasse agiert:
CREATE PROCEDURE JDBCInsert( IN arg1 INTEGER, IN arg2 CHAR(50) ) EXTERNAL NAME 'JDBCExample.Insert(ILjava/lang/String;)V' LANGUAGE JAVA; |
Rufen Sie die Methode JDBCExample.Insert wie folgt auf:
CALL JDBCInsert( 202, 'Southeastern Sales' ); |
Die Insert-Methode veranlasst, dass die Methode InsertDynamic aufgerufen wird.
Vergewissern Sie sich, dass in die Tabelle Departments eine zusätzliche Zeile eingefügt wurde.
SELECT * FROM Departments; |
Das Beispielprogramm zeigt den aktualisierten Inhalt der Tabelle Departments im Fenster "Datenbankservermeldungen" an.
In der Beispielklasse DeleteDynamic gibt es eine ähnliche Methode, die zeigt, wie die soeben hinzugefügte Zeile gelöscht wird.
Definieren Sie eine gespeicherte Prozedur namens JDBCDelete, die als Wrapper für die Methode JDBCExample.Delete in der Klasse agiert:
CREATE PROCEDURE JDBCDelete( in arg1 integer ) EXTERNAL NAME 'JDBCExample.Delete(I)V' LANGUAGE JAVA; |
Rufen Sie die Methode JDBCExample.Delete wie folgt auf:
CALL JDBCDelete( 202 ); |
Die Delete-Methode veranlasst, dass die Methode DeleteDynamic aufgerufen wird.
Überprüfen Sie, ob die Zeile aus der Tabelle Departments gelöscht wurde.
SELECT * FROM Departments; |
Das Beispielprogramm zeigt den aktualisierten Inhalt der Tabelle Departments im Fenster "Datenbankservermeldungen" an.
Kommentieren Sie diese Seite in DocCommentXchange. Senden Sie uns Feedback über diese Seite via E-Mail. |
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |