PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Warum liefert JavaSql-Anfrage anderes Ergebniss als eine reine sql-anweisung


Lord Nikon
2006-07-04, 14:25:59
Hi,
diese Anweisung

SELECT usr.username, r.reviewtext, (r.qualität*0.1+r.preis*0.6), r.Reviewid, cr.combined_rank,r.userid
FROM tbl_Review r, tbl_User usr, tbl_CombinedRank cr
WHERE r.productid=1 And r.userid=usr.userid And cr.userid=r.Userid
group by username, r.reviewtext, (r.qualität*0.1+r.preis*0.6), r.Reviewid, cr.combined_rank,r.userid
order by (r.qualität*0.1+r.preis*0.6) desc ,cr.combined_rank desc;

lieferte, als ich diese Anweisung einmal in Access ausgeführt habe die ríchtige Ausgabe.
Als ich das ganze durch eine JDBC Verbindung mal in Java getestet hatte,
liefert die gleiche Anfrage nur ein Ergebniss statt 5 zurück, obwohl auf die gleiche Datenbank zugegriffen wird. Die Strings sind auch komplet identisch, dass habe ich schon überprüft.Woran kann das liegen?

P2oldi
2006-07-04, 14:37:54
bist Du sicher das nur ein Ergebnis kommt und Du nicht nur das erste der 5 anzeigen läßt? Das ResultSet enhält ja einzeln ansprechbare Sätze, die Du dann per Schleife o.ä. auslesen kannst...


while(DeinResultSet.next())
{
for(int i = 1; i < 7; i++)
{
System.out.println(DeinResultSet.getString(i));
}
System.out.println("-----------------------------------------");
}

das sollte Dir ne Liste des kompletten ResultSets geben.

MeLLe
2006-07-04, 14:43:26
Kleine Bemerkung noch: ändere Feldnamen ab!
"qualität" muss nicht jede Datenbank-Umgebung vertragen können ... und schaut zudem doof für nicht-Deutsche aus, die Codeschnipsel von dir zu Gesicht bekommen =)

Lord Nikon
2006-07-04, 15:02:04
P2oldi[/POST]']bist Du sicher das nur ein Ergebnis kommt und Du nicht nur das erste der 5 anzeigen läßt? Das ResultSet enhält ja einzeln ansprechbare Sätze, die Du dann per Schleife o.ä. auslesen kannst...


while(DeinResultSet.next())
{
for(int i = 1; i < 7; i++)
{
System.out.println(DeinResultSet.getString(i));
}
System.out.println("-----------------------------------------");
}

das sollte Dir ne Liste des kompletten ResultSets geben.

Danke für die Antwort, aber genau auf diese weise lese ich Daten aus :)
@MeLLe
Ja da hast du Recht, ich sollte die Feldnamen komplet englisch benennen :)

P2oldi
2006-07-04, 15:12:34
hm schade, wär so schön eifnach gewesen ;) Bin im Moment auch überfragt dann, ich denk nochmal drüber nach... jetzt ist erstmal Feierabend :D

Shink
2006-07-04, 15:20:22
Lord Nikon[/POST]']
Als ich das ganze durch eine JDBC Verbindung mal in Java getestet hatte,
liefert die gleiche Anfrage nur ein Ergebniss statt 5 zurück, obwohl auf die gleiche Datenbank zugegriffen wird. Die Strings sind auch komplet identisch, dass habe ich schon überprüft.Woran kann das liegen?
Am JDBC-Treiber. Was ist es denn für eine Datenbank und was für ein JDBC-Treiber? Microsoft legt ja z.B. erstaunlicherweise (?) nicht gerade allzuviel Wert auf seine Java-Treiber.
Wird sicher nirgends eine Exception geworfen?

Lord Nikon
2006-07-04, 16:21:19
Shink[/POST]']Am JDBC-Treiber. Was ist es denn für eine Datenbank und was für ein JDBC-Treiber? Microsoft legt ja z.B. erstaunlicherweise (?) nicht gerade allzuviel Wert auf seine Java-Treiber.
Wird sicher nirgends eine Exception geworfen?

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
con = DriverManager.getConnection("jdbc:odbc:Driver={MicroSoft Access Driver (*.mdb)};DBQ="+path,

Wie du siehst, öffne ich eine Access Datenbank damit.
Exceptions werden auch keine geworfen, zumindest nicht, dass es mir
aufgefallen wäre.Ich prüfe ja, ob eine SQLException geworfen wird, aber dies passiert während der Laufzeit nicht.

Lord Nikon
2006-07-08, 11:11:29
*push*

Der_Donnervogel
2006-07-14, 18:28:12
Ich habe zwar auch noch nicht eine mdb-Datenbank von Java aus angesprochen, aber ich würde einfach mal testen was denn den Unterschied macht. Also einach das SQL sowohl in Java als auch Access schrittweise entweder vereinfachen bis beide das selbe Ergebnis liefern, oder von einem einfache SQL-Statement beginnend so lange erweitern, bis die Ergebnisse abweichen.

Vielleicht ist es ein Bug oder es gibt es kleine Unterschiede zwischen Access und Java, wie zB zwischen Access und MS SQL Server?