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 des Batches 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 Zeilenzahlangaben zurückgegeben, in dem die Menge der Anzahlangaben vor dem Batchfehler eine gültige nicht negative Aktualisierungsanzahl enthält, während alle Anzahlangaben 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 Batchinhalt 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(); } } |
![]() |
Kommentieren Sie diese Seite in DocCommentXchange.
|
Copyright © 2012, iAnywhere Solutions, Inc. - SQL Anywhere 12.0.1 |