Hab gerade mit JDBC begonnen und möchte folgende SQL-Anweisung ausführen
:
String befehl="SELECT * FROM Lieder WHERE interpret LIKE 'Glenn Danzig'"
;
ResultSet rs=st.executeQuery (befehl) ;
Ich erhalte aber immer eine SQL-Exception. Wo liegt der Fehler ?
mfG Markus
Das kann jetzt natürlich wieder alles mögliche sein.
Das SQL sieht OK aus.
Welche DB?
Wie lautet denn die genaue Fehlermeldung?
Das steht in der Exception. Im Gegensatz zur (leider relativ weit
verbreiteten) Meinung, dass Fehlermeldungen einzig und allein dazu
existieren um die Entwickler und Anwender zu ärgern und ihnen vor die Augen
zu führen wie sehr sie dem Programm nicht ausgeliefert sind, haben
Exceptions und andere Fehlermeldungen auch einen Sinn.
Sie versuchen dem Benutzer/dem Entwickler mehr oder weniger erfolgreich
mitzuteilen welches Problem aufgetreten ist und wo. Glücklicherweise gehört
hier Java zur erfolgreicheren Kategorie (im Gegensatz z.B. zu Windows mit
seiner "Allgemeinen Schutzverletzung").
Es mag zwar manchmal sein, dass die Exception eine unzureichende
Beschreibung enthält (z.B. weil ein Fehler aufgetreten ist, der von den
Entwicklern in keiner weise vorhergesehen wurde), aber meistens ist das
nicht der Fall.
Teile uns den genauen Wortlaut der Exception (und evtl. den Anfang des
Stacktrace) mit, und wir werden dir wahrscheinlich besser helfen können.
mfg
Joachim Sauer
--
Das legt dann nochmal eben eine halbe Mio Bananen an, jede ca. 24 Byte
groß. Macht dann nochmal ca. 12 MB.
[angewandte OOP in de.comp.lang.java]
>ResultSet rs=st.executeQuery (befehl) ;
Hallo Markus
.. wie ist denn die Fehlermeldung? Klappt denn die Connection zur
Datenbank? Welche Datenbank? Welchen JDBC-Treiber ...?
Schicke doch mal ein paar Zeilen Code.
Thomas
Hallo !
Die Fehlermeldung lautet :
java.sql.SQLException: [Microsoft][ODBC Microsoft Access Driver] 1
Parameter wurden erwartet, aber es wurden zu wenig Parameter übergeben.
at sun.jdbc.odbc.JdbcOdbc.createSQLException(JdbcOdbc.java:6036)
at sun.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.java:6193)
at sun.jdbc.odbc.JdbcOdbc.SQLExecDirect(JdbcOdbc.java:2500)
at sun.jdbc.odbc.JdbcOdbcStatement.execute(JdbcOdbcStatement.java:319)
at
sun.jdbc.odbc.JdbcOdbcStatement.executeQuery(JdbcOdbcStatement.java:234)
at Datenbank.main(Datenbank.java:24)
und ich verwende eine Access 2000 - Datenbank.
mfG Markus
Hallo !
Die Connection funktioniert, die genaue Fehlermeldung habe ich in meinem
letzen Posting (Antwort an Martin Erren) deponiert.
mfG Markus
Im Spass: Der Fehler liegt in der Auswahl der Datenbank.
Im Ernst: SQL ist nicht SQL. Von Java aus hast Du alles
richtig gebamcht. Leider muss ich bei Access-SQL passen.
Teste den select mal direkt von der SQL Konsole.
Vielleicht nimmt Access sowas wie
WHERE LIKE(interpret,'Glenn Danzig')
lieber.
(Die Fehlermeldung sieht von Microsoftisch ins Deutsche
übersetzt ganz so aus, oder?)
Sicher gibt's da auch Dokumentation von MS-Access...
HTH
Martin Erren
> String befehl="SELECT * FROM Lieder WHERE interpret LIKE 'Glenn Danzig'"
Denke mal das es an den ' liegt. Die müssen meist speziell angegeben werden
versuch mal
sowas wie \ oder / oder ' davor zu setzen.
Bastian
Existiert Lieder? Existiert interpret? Wenn ja, ist Lieder eine
Tabelle oder eine Abfrage? Wenn es eine Abfrage ist, basiert sie auf
Abfragen, die VBA-Funktionen enthalten?
Enthält Lieder selbst berechnete Spalten, die VBA-Funktionen
verwenden?
Gruß,
Josch.
Markus Krebl schrieb:
> String befehl="SELECT * FROM Lieder WHERE interpret LIKE 'Glenn Danzig'";
>
> ResultSet rs=st.executeQuery (befehl) ;
>
> Ich erhalte aber immer eine SQL-Exception. Wo liegt der Fehler ?
Ich möchte mich Bastians Kommentar anschließen und das gleich nochmal
konkretisieren und erweitern.
Hochkommas müssen innerhalb von Strings immer als \' geschrieben werden,
also mit \ davor.
Außerdem würde es sich für Dein Problem wahrscheinlich anbieten den Namen in
%% einzuschließen, das sind Wildcards (wie z.B. der Stern (*) bei
Dateiabfragen), und die sind meines Wissens SQL-weit gültig. Teste es doch
einfach mal.
Schöne Grüße
Reiner Goldberg
Ob der JDBC Treiber das in diesem Fall (Access) so haben will kann ich
nicht sagen, aber für den allgemeinen Fall stimmt das so nicht.
In Java Strings müssen nur doppelte Hochkommas (") escaped werden, nicht
aber einfache (').
Um ansonsten nochmal was zum Thema zu sagen: Ich kann mich an einige
Threads erinnern, die die speziellen Probleme mit Access + JDBC
behandelt haben. Vielleicht hilft http://groups.google.com/ weiter? (Ist
schon eine Weile her. Topics weiß ich leider keine)
Gruß,
Andreas