SQL-Anweisungen wie INSERT, UPDATE und DELETE, die keine Ergebnismengen zurückgeben, werden mithilfe der Methode executeUpdate der Klasse Statement ausgeführt. Anweisungen wie CREATE TABLE und andere Anweisungen zur Datendefinition können auch mit executeUpdate ausgeführt werden.
Die Methoden addBatch, clearBatch, und executeBatch der Klasse Statement können ebenfalls verwendet werden. Da die JDBC-Spezifikation im Hinblick auf das Verhalten der executeBatch-Methode der Klasse Statement unklar ist, sollten die folgenden Hinweise in Betracht gezogen werden, wenn diese Methode mit dem SQL Anywhere-JDBC-Treiber verwendet wird:
Die Verarbeitung für den Batch wird sofort angehalten, wenn eine SQL-Ausnahmebedingung oder eine Ergebnismenge erkannt wird. Beim Anhalten der Batchverarbeitung wird von der executeBatch-Methode ein BatchUpdateException-Objekt ausgegeben. Mit dem Aufruf der getUpdateCounts-Methode für das BatchUpdateException-Objekt wird ein Ganzzahl-Array von Zeilenzählern zurückgegeben, in dem die Menge der Zähler vor dem Batchfehler eine gültige nicht negative Aktualisierungsanzahl enthält, während alle Zähler ab dem Batchfehler den Wert -1 enthalten. Das Umwandeln des BatchUpdateException-Objekts in ein SQLException-Objekt liefert zusätzliche Einzelheiten dazu, warum die Batchverarbeitung angehalten wurde.
Der Batch wird nur gelöscht, wenn die clearBatch-Methode explizit aufgerufen wurde. Daher wird bei wiederholtem Aufrufen der executeBatch-Methode der Batch immer wieder neu ausgeführt. Außerdem wird beim Aufrufen von execute(sql_query) oder executeQuery(sql_query) zwar die angegebene SQL Abfrage korrekt ausgeführt, aber der zugrundeliegende Batch wird nicht gelöscht. Wenn Sie also die executeBatch-Methode aufrufen, gefolgt von execute(sql_query) und gefolgt von einem erneuten Aufruf der executeBatch-Methode, werden die im Batch zusammengefassten Anweisungen ausgeführt, anschließend wird die angegebene SQL-Abfrage ausgeführt und schließlich werden die im Batch zusammengefassten Anweisungen erneut ausgeführt.
Das folgende Codefragment veranschaulicht, wie eine INSERT-Anweisung ausgeführt wird. Es verwendet ein Statement-Objekt, das an die InsertStatic-Methode als Argument übergeben wurde.
public static void InsertStatic( Statement stmt ) { try { int iRows = stmt.executeUpdate( "INSERT INTO Departments (DepartmentID, DepartmentName)" + " VALUES (201, 'Eastern Sales')" ); // 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 Java-Datei JDBCExample, die im Verzeichnis Beispielverzeichnis\SQLAnywhere\JDBC enthalten ist.
![]() |
Kommentieren Sie diese Seite in DocCommentXchange.
|
Copyright © 2010, iAnywhere Solutions, Inc. - SQL Anywhere 12.0.0 |