# Probl. mit Meth.executeUpdate aus dem Interf. Statem. (Sql)



## GagamehlOho (18. Aug 2006)

So, ich habe folgende Probleme...

Ich habe ein Programm welches ständig mit einer Access Datenbank über eine JDBC-ODBC-Brdige kommuniziert und DML-Requests schickt.
Die Requests sollen mit Hilfe der execute Methoden aus dem Interface Statement gesendet/verarbeitet/blubub werden.
Da bin ich auf folgendes Problem gestoßen:

Wenn ich ein Update oder Delete-Query über die Methode executeQuery(String str) versenden möchte, wird eine "...createSQLException" geworfen....
Habe jetzt ein wenig rumgespielt und herausgefunden, dass ich Selects über executeQuery anfordern darf, Updates über executeUpdate (Wobei laut Beschreibung, sie auch für Inserst zuständig sein soll, was bei mir aber nicht der Fall liegt) und Inserts nur über execute, wobei die Inserts nie 100% klappen (In einem SQL-Client aber schon ;-( ).
Updates und Selects könnne glaube ich ebenfalls über die normale execute Methode ausgeführt ohne Probleme ausgeführt werden...

So, ich kann mir das irgendwie so hinfummeln, dass es klappt aber das möchte ich eigentlich nicht, da ich die Logik dahinter verstehen möchte.
Ich möchte wissen, wo der genaue Unterschied der execute-Methoden liegt und warum ich z.B. kein Insert über nen executeQuery abschicken kann etc.

Wenn Ihr hiermit nichts anfangen könnt, kann ich morgen mal einen Codeausschnitt liefern.


----------



## AlArenal (18. Aug 2006)

Mit etwas Englisch und logischem Denken kommt man dahinter.

#executeQuery = execute query = führe Abfrage aus
Eine Abfrage fragt etwas ab, liefert also ein Ergebnis (ResultSet).

#executeUpdate = execute update = führe Aktualisierung aus
Eine Aktualisierung ändert seiner Wortbedeutung nach bereits vorhandene Daten. Zu den Änderungen am Datenbestand zählt dabei das Einfügen, Ändern und Löschen von Datensätzen und -strukturen.

#execute ist eigentlich für alles zu gebrauchen, man muss dann nur je nachdem was man im Einzelnen hat ausführen lassen, noch von Hand z.B. das ResultSet abfragen. Normalerweise sollte es auch so funzen, es sei denn aus irgendwelchen Grunden haben diejenigen, die die Treiber geschrieben haben, geschlampt und das Internface nicht in seiner Funktionalität komplett implementiert. Dazu sollte aber die jeweilige Doku etwas hergeben.

Aus naheliegenden Gründen kann man nicht alles allein mit einem Methodenaufruf erledigen, es sei denn man schießt ein wenig von hinten durch die Brust ins Auge.


----------



## Guest (18. Aug 2006)

Ah klar, ich dummer Idiot...Query bedeutet ja Abfrage, dachte das würde eher so in richtung Anforderung oder allgemein Kommando gehen. nun gut, dann ist bis dahin alles klar.
Wundert mich dann aber troztdem warum sich die inserts nicht über executeUpdate durchführen lassen.

Aber viele Dank schonmal..


----------

