Suche möglichkeit mein SQL Statement auszugeben

Hallo,

ich habe folgendes Problem. Ich schreibe zu zeit ein programm wo ich mich mit einer Oracle Datenbank verbinde. Nun tritt bei mir das Problem auf das es mir bei einer normalen SELECT anfrage keine werte zurück liefert. Normalerweise müsste dies funktionieren da ich lediglich das Statement verändern musste. Und davor geb es keinerlei Probleme. Nun möchte ich einfach mal das Statement ausgeben lassen (z.B. mit System.out.print…) damit ich prüfen kann ob damit irgendwas nicht stimmt.

Danke für eure Hilfe im vorraus

MFG,

Heizer

Hallo Heizer,

Nun möchte ich einfach
mal das Statement ausgeben lassen (z.B. mit
System.out.print…)

und wo liegt dein Problem? Warum machst du es nicht genau so?

Viele Grüße,

Andreas

und wo liegt dein Problem? Warum machst du es nicht genau so?

mein problem ist das ich schon viele varianten ausprobiert habe das statement aus zu geben und bei mir am ende komische ausgaben gemacht werden. z.B.: oracle.jdbc.driver.OraclePreparedStatement@42f352
wobei ich es nicht verstehe das er mir am ende immer nur sowas wie „@42f352“ ausgibt.

Grüße

Heizer

Auch hallo

Aus der Ferne ist es etwas schwerer, die Fehlerursache einzugrenzen. Aber vielleicht liegt es am Quellcode: http://www.oraclesurvivalguide.de/ -> Java

mfg M.L.

oder kann es auch sein das es daran liegt das ich meine sql abfrage nicht richtig gemacht habe, aber selbst da müsste doch eigendlich dann eine fehler meldung ausgespuckt werden… oder ?!

mfg,

heizer

Weil du das java.sql.Statement-Objekt ausgibst und nicht das Statement als String was du im Code generierst! Das Objekt hilft dir nix, du musst den String ausgeben

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Nun möchte ich einfach mal das Statement ausgeben lassen

Verstehe ich dich richtig?

String sql = „SELECT foo FROM bar“;
System.out.println(sql);

Bye
McPringle

Machen wir es mal ganz einfach. Der Fehler den ich uhrsprünglich habe wird ja sicherlich daran liegen das mein SQL Statement nicht korrekt ist. So sehe das Statement bei mir aus:

PreparedStatement stmt = con.prepareStatement(„SELECT nummer, lname, fname, info, gebdate, street, strnr, zip, city, date1, date2, atnr
FROM Patient
WHERE (lname = ? OR lname IS NULL) AND (fname =? OR fname IS NULL)
AND (nummer = ? OR nummer IS NULL) AND (gebdate = ? OR gebdate IS NULL)
AND (street = ? OR street IS NULL) AND (strnr = ? OR strnr IS NULL)
AND (city = ? OR city IS NULL) AND (zip = ? OR zip IS NULL)
AND (info = ? OR info IS NULL) AND (date1 = ? OR date1 IS NULL)
AND (date2 = ? OR date2 IS NULL) AND (atnr = ? OR atnr IS NULL)“);

vielleicht kann ja jemand sagen ob das so geht oder es wirklich an der SELECT abfrage hängt.

P.S.: habe den „?“ auch ein String zugeordnet. Im genaueren möchte ich in meinen Programm einfach eine sucheeinbauen wo all diese felder ausgefüllt werden können aber nicht unbedingt muss;

AND (atnr = ? OR atnr IS NULL)

P.S.: habe den „?“ auch ein String zugeordnet. Im genaueren
möchte ich in meinen Programm einfach eine sucheeinbauen wo
all diese felder ausgefüllt werden können aber nicht unbedingt
muss

Das wird mit der Anfrage so nicht klappen: Wenn der Parameter „?“ im obigen Beispielprädikat nicht genau den richtigen Wert aus den zu selektierenden Tupeln hat, kann die Bedingung nur noch dann wahr sein, wenn in den Daten ein NULL-Wert in dieser Spalte steht.

Ich vermute, dass du eher den Suchbegriff auf NULL überprüfen wolltest, ungefähr so:

 AND (atnr = ? OR ? IS NULL)

In diesem Falle würde sich allerdings die Anzahl der Parameter verdoppeln.

Andreas

Hallo,

PreparedStatement stmt = con.prepareStatement("SELECT nummer,…

p6spy erlaubt das mitloggen der Prepared Statements nach dem Ersetzen der Platzhalter, also das tatsächlich abgesendete Statement. Sehr nützlich zur Analyse solcher Probleme.

http://sourceforge.net/projects/p6spy/

Gruß
Heavy