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.
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.
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 ?!
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]
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;
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.
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.