Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden.
Du solltest ein Upgrade durchführen oder einen alternativen Browser verwenden.
Du solltest ein Upgrade durchführen oder einen alternativen Browser verwenden.
[Oracle] DB-Connection
- Ersteller schmidt206
- Erstellt am
- Registriert
- Dez. 2007
- Beiträge
- 2.062
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.
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.
- Registriert
- Juli 2001
- Beiträge
- 2.405
http://www.dpunkt.de/java/Referenz/Das_Paket_java.sql/29.html#getTime()
public long getTime() Liefert die Zeit in Anzahl an Millisekunden seit dem 1.1.1970.Das hättest du sicher auch alleine gefunden, oder?
public long getTime() Liefert die Zeit in Anzahl an Millisekunden seit dem 1.1.1970.Das hättest du sicher auch alleine gefunden, oder?
- Registriert
- Dez. 2007
- Beiträge
- 2.062
Ja, ist richtig.
Aber
19:09:32, also die gefragt Uhrzeit im normalen Format und nicht in millis.
EDIT: Ok, ich musste extra nochmal folgendes eingeben:
Jetzt gehts, danke!
EDIT2: Mit
Aber
und dann die Ausgabe von date bringt mir:date = rs_01.getTime("DATI_RECORD_CREATE");
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
hab ich zwar nun die Zeit in Millisekunden, wenn ich die jedoch perlong date1 = date.getTime()
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.String date_ausgabe = df.format(date);
Zuletzt bearbeitet:
- Registriert
- Juli 2001
- Beiträge
- 2.405
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)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.
Versuch doch mal das:
Code:
long date1 = date.getTime();
java.util.Date myDate = java.util.Date(date1);
String date_ausgabe = myDate.toString();
- Registriert
- Dez. 2007
- Beiträge
- 2.062
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.
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.
- Registriert
- Dez. 2007
- Beiträge
- 2.062
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?
- Registriert
- Dez. 2007
- Beiträge
- 2.062
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.
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:
- Registriert
- Juli 2001
- Beiträge
- 2.405
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:
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.
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
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.
- Registriert
- Dez. 2007
- Beiträge
- 2.062
Danke!
Das macht jetzt:
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.
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:
- Registriert
- Dez. 2007
- Beiträge
- 2.062
- Registriert
- Juli 2001
- Beiträge
- 2.405
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.
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:
- Registriert
- Dez. 2007
- Beiträge
- 2.062
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.
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.
- Registriert
- Dez. 2007
- Beiträge
- 2.062
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.
Cobinja
Lt. Junior Grade
- Registriert
- Juli 2006
- Beiträge
- 454
Ist das ein FileWriter? Dann tippe ich auf einen vollen Puffer. Setz mal die Zeileschmidt206 schrieb:fw.write()
Code:
fw.flush()
Ähnliche Themen
- Antworten
- 3
- Aufrufe
- 4.194
- Antworten
- 8
- Aufrufe
- 1.598
- Antworten
- 9
- Aufrufe
- 1.893