[Oracle] DB-Connection

Kein Problem, immer wieder gern :p
 
Jetzt hab ich noch ne Frage.

Ich hole mir ja per getTimestamp die Zeit aus der Datenbank. Ich möchte diese gerne in nen int/long als Millisekunden umwandeln, damit ich diese vergleichen kann. Ich hab schon gegooglet, aber finde meist nur getTime, womit man sich die aktuelle Zeit ausgeben lassen kann.
 
Ja, ist richtig.

Aber
date = rs_01.getTime("DATI_RECORD_CREATE");
und dann die Ausgabe von date bringt mir:
19:09:32, also die gefragt Uhrzeit im normalen Format und nicht in millis.

EDIT: Ok, ich musste extra nochmal folgendes eingeben:
long date1 = date.getTime();

Jetzt gehts, danke!

EDIT2: Mit
long date1 = date.getTime()
hab ich zwar nun die Zeit in Millisekunden, wenn ich die jedoch per
String date_ausgabe = df.format(date);
als String formatiere und ausgebe, zeigt er mir als Datum immer den 01.01.1970 an und nicht das richtige Jahr. Die Uhrzeiten stimmen allerdings.
 
Zuletzt bearbeitet:
schmidt206 schrieb:
EDIT2: Mit hab ich zwar nun die Zeit in Millisekunden, wenn ich die jedoch per als String formatiere und ausgebe, zeigt er mir als Datum immer den 01.01.1970 an und nicht das richtige Jahr. Die Uhrzeiten stimmen allerdings.
Hast du dir die Funktion df.format() mal angesehen? Wenn nicht, dann mach das mal: http://java.sun.com/j2se/1.4.2/docs/api/java/text/SimpleDateFormat.html#format(java.util.Date,%20java.lang.StringBuffer,%20java.text.FieldPosition)

Versuch doch mal das:
Code:
long date1 = date.getTime();
java.util.Date myDate = java.util.Date(date1);
String date_ausgabe = myDate.toString();
 
Danke für den Tipp!

Funktioniert zwar, aber kommt aufs gleiche raus. Ich kann nämlich nicht schreiben long date1 = date.getTime();, da die beiden Formate nicht übereinstimmen. Noch steht bei mir ja date = rs_01.getTime("DATI_RECORD_CREATE"); und date in eine Variable des Typs java.sql.Time.
 
Ich denke, date ist ein java.sql.Timestamp?? Bei einem Timestamp geht nämlich getTime() und liefert einen long zurück.
 
Ah alles klar, funktioniert prima! Jetz hab ich nur das Problem, dass der String das Format "Sun Jun 01 15:37:14 CEST 2008" hat. Lässt sich das ändern?
 
Code:
String date_ausgabe = df.format(myDate);
Könnte klappen :)
 
Ah, natürlich. Ich hatte das zwar schon da stehen, aber hatte ja vorher schon toString() und das funktioniert natürlich nicht. Danke für die Hilfe!

EDIT: Noch ne Frage:

Ich habe:
Tabelle_1 mit Spalte ID und Nummer
Tabelle_2 mit Spalte ID und Länge, etc.
Dabei stimmen die Spalten ID überein.

Bislang hole ich per SELECT nur Daten aus Tabelle_2.
Wie kann ich die Daten aus Tabelle 1 im gleichen ResultSet bekommen und bei der Ausgabe die zu der jeweiligen ID gehörende Nummer hinzufügen?

Ich weiß, dass ich wohl den JOIN-Befehl einsetzen muss, habe es momentan folgendermaßen:

ResultSet rs_01 = stmt_01.executeQuery("SELECT ID, NUMMER from Tabelle_2 JOIN Tabelle_1 WHERE Tabelle_2.ID = Tabelle_1.ID ORDER BY ID ASC");

Das klappt allerdings nicht.
 
Zuletzt bearbeitet:
Verstehe ich das richtig, du willst die Nummer und die Länge, welche zur gleichen ID gehören, in einem ResultSet haben?
Das geht einfach über das folgende Statement:
Code:
SELECT t1.ID, t1.Nummer, t2.Laenge FROM Tabelle1 AS t1, Tabelle2 AS t2 WHERE t1.ID=t2.ID ORDER BY t1.ID ASC
Dazu habe ich noch ein paar Hinweise:
Du solltest SQL Statements direkt in der Datenbank prüfen, also den Oracle SQL Manager (keine Ahnung, wie das Ding heisst) öffnen und das SQL Statement dort absetzen und das Ergebnis prüfen. Das geht ziemlich schnell und du kannst das funktionierende Statement in deinem Java Programm verwenden.
Bei der Verwendung von JOIN Funktionen kann es dir passieren, dass verschiedene Datenbanken diese untershciedlich verarbeiten. Deshalb konstruiere ich lieber mit WHERE Bedingungen. Wenn du JOIN verwenden willst, solltest du dich in einer SQL Referenz darüber informieren, wie das geht, nämlich SELECT * FROM tab1 JOIN tab2 ON (tab1.id = tab2.id)
Un noch eine Frage. Hast du die Datenbank selbst entworfen? Sind die IDs automatisch vergeben? Informiere dich über Datenbankkonzepte und Primär- und Fremdschlüssel.
 
Danke!
Das macht jetzt:

ResultSet rs_01 = stmt_01.executeQuery("SELECT t1.COIL_ID, t1.TEMP_0001, t1.DATI_RECORD_CREATE, t1.CAST_LENGTH, t2.STRAND_NR FROM MOULD_TEMPERATURES as t1, COIL as t2 WHERE t1.COIL_ID=t2.COIL_ID ORDER BY t1.COIL_ID ASC");

java.sql.SQLException: ORA-00933: SQL-Befehl wurde nicht korrekt beendet

Hab ich jetzt nen Knick inner Optik, dass ich den Fehler nicht sehe?

EDIT: Die Datenbank hab ich nicht selbst entworfen. Die steht schon seit Jahren. Die IDs werden aus einem anderen System in die Datenbank übertragen, sind aber automatisch generiert. Über Primärschlüssel etc. weiß ich Bescheid.
 
Zuletzt bearbeitet:
Bei manchen SQL APIs muss man ein ";" (Semikolon) als Abschluss eines SQL Statements anfügen. Bei den meisten geht das mittlerweile auch ohne.
 
Lass mal das ASC und das Semikolon weg. ASC ist eh der default bei ORDER BY.
Ansonsten bin ich aufgeschmissen, in Ermangelung einer Oracle DB.
Welche Version von Oracle habt ihr im Einsatz?
Probier das Statement in dem Oracle SQL Developer. Der müsste die eine genauere Stelle anzeigen können, wo das Problem liegt.
Wenn du den SQl Developer nicht hast, versuch einen Client zu Oracle zu starten.
Ich kann dir leider nicht sagen, wie das Verfahren da ist. Bei MS SQL gibt es eine Möglichkeit, einfach Abfragen auf die Datenbank in einem SQL Management Studio loszulassen.
 
Zuletzt bearbeitet:
Super, jetzt klappt alles.

Ich lass mir die Datensätze nun alle in einer txt-File ausgeben. Das Programm läuft ganz normal ab.
Allerdings hört er nach 12117 von 12157 Datensätzen mitten in der Zeile auf und schreibt nicht weiter in die txt-File. Bis zu diesem Zeitpunkt ist alles genau so, wie ich es haben möchte.

Gibts da irgendwie ne Begrenzung? Ich benutze fw.write() in der while-Schleife.
 
Hört das Programm einfach auf? Ohne Fehler? Prüfst du auf Exceptions? Bau vielleicht Statusmeldungen ein, die in eine andere txt-datei geschrieben werden, in denen du dir Variablen ausgeben lässt.
 
Das Programm geht bis zum Ende. Wenn ich das ganze in die Konsole schreiben lassen, gibt er alle Datensätze aus. Nur in der txt-File hört er immer beim selben Punkt auf, und das mitten in der Zeile.
 
Hmm, da hab ich jetzt keine Ahnung. Wenn er keinen Fehler ausgibt, kann ich nicht rauskriegen, woran das liegt.
 
schmidt206 schrieb:
Ist das ein FileWriter? Dann tippe ich auf einen vollen Puffer. Setz mal die Zeile
Code:
fw.flush()
hinter fw.write() in die while-Schleife. Damit zwingst du den darunterliegenden Puffer zum Schreiben und anschließenden Leeren.
 
Zurück
Oben