Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

SQL-Befehl

0 views
Skip to first unread message

Markus Krebl

unread,
Oct 11, 2001, 9:35:37 AM10/11/01
to
Hallo !

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

Martin Erren

unread,
Oct 11, 2001, 9:49:10 AM10/11/01
to
"Markus Krebl" <mar...@gmx.at> schrieb im Newsbeitrag news:3BC5A029...@gmx.at...

Das kann jetzt natürlich wieder alles mögliche sein.
Das SQL sieht OK aus.
Welche DB?
Wie lautet denn die genaue Fehlermeldung?

Joachim Sauer

unread,
Oct 11, 2001, 9:41:52 AM10/11/01
to
Markus Krebl <mar...@gmx.at> wrote:

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]

"Thomas Schlebach"_tschlebach@it-pro.de

unread,
Oct 11, 2001, 10:03:24 AM10/11/01
to

>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


Markus Krebl

unread,
Oct 11, 2001, 10:03:23 AM10/11/01
to
Martin Erren schrieb:

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

Markus Krebl

unread,
Oct 11, 2001, 10:04:53 AM10/11/01
to
"\"Thomas Schlebach\"_tschlebach"@it-pro.de schrieb:

Hallo !

Die Connection funktioniert, die genaue Fehlermeldung habe ich in meinem
letzen Posting (Antwort an Martin Erren) deponiert.

mfG Markus

Martin Erren

unread,
Oct 11, 2001, 10:25:33 AM10/11/01
to
> 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.

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


Bastian Fiebig

unread,
Oct 11, 2001, 10:25:20 AM10/11/01
to
Hallo

> 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

Aljoscha Rittner

unread,
Oct 11, 2001, 6:40:59 PM10/11/01
to
Markus Krebl schrieb:

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.

Reiner Goldberg

unread,
Oct 12, 2001, 2:29:43 AM10/12/01
to
Hallo Markus

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

Andreas Senft

unread,
Oct 12, 2001, 5:33:31 AM10/12/01
to
Reiner Goldberg wrote:
>
> 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.

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

0 new messages