mysql parsen
Hallo,
habe folgendes Problem:
ein Datum aus Mysql wird in Java nicht erkannt, weil das Datum laut java ungültig ist. Also nutze ich den TIMESTAMP(UNIX_TS)
oracle.sql.TIMESTAMP.toDate(executeSQLQuery("select UNIX_TIMESTAMP(StartTermin) from projektphase where projektphasenid="+projektPhasenIDs)[1][0].getBytes())
Eclipse meldet:
executeSQLQuery("select UNIX_TIMESTAMP(StartTermin) from projektphase where projektphasenid="+projektPhasenIDs[i])[1][0]="1039734000"
sollte funktionieren, ich weis aber nicht was ich falsch mache.
meine Konsole wirft aus:
java.lang.ArrayIndexOutOfBoundsException: 7
at oracle.sql.TIMESTAMP.toDate(TIMESTAMP.java:194)
at de.newvoice.projektmanagementtags.Diagramme.doStartTag(Diagramme.java:70)
at de.newvoice.moduledef.SetupContext.runTag(SetupContext.java:153)
at org.apache.jsp.set_jsp._jspService(set_jsp.java:182)[]
habe folgendes Problem:
ein Datum aus Mysql wird in Java nicht erkannt, weil das Datum laut java ungültig ist. Also nutze ich den TIMESTAMP(UNIX_TS)
oracle.sql.TIMESTAMP.toDate(executeSQLQuery("select UNIX_TIMESTAMP(StartTermin) from projektphase where projektphasenid="+projektPhasenIDs)[1][0].getBytes())
Eclipse meldet:
executeSQLQuery("select UNIX_TIMESTAMP(StartTermin) from projektphase where projektphasenid="+projektPhasenIDs[i])[1][0]="1039734000"
sollte funktionieren, ich weis aber nicht was ich falsch mache.
meine Konsole wirft aus:
java.lang.ArrayIndexOutOfBoundsException: 7
at oracle.sql.TIMESTAMP.toDate(TIMESTAMP.java:194)
at de.newvoice.projektmanagementtags.Diagramme.doStartTag(Diagramme.java:70)
at de.newvoice.moduledef.SetupContext.runTag(SetupContext.java:153)
at org.apache.jsp.set_jsp._jspService(set_jsp.java:182)[]
hmm, warum benutzt du irgendwelche oracle-Klassen, wenn du eine MySQL laufen hast?
Ich würde das so machen:
Ich würde das so machen:
|
|
Quellcode |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
import java.sql.Date;
// ...
private Date einDatum; // java.sql.Date
// ...
Connection con = ConnectionManager.newConnection();
Statement stmt = con.createStatement();
ResultSet rst = stmt.executeQuery("SELECT datum FROM tabellenname WHERE irgendwas);
while(rst.next()){
einDatum = rst.getDate("datum"); // oder rst.getDate(1); achtung, beim rst wird bei 1 angefangen zu zählen!
}
// ...
long timestamp = einDatum.getTime();
|
Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von »narfnarf« (18. Mai 2005, 15:24)
Den ConnectionManager benutze ich generell nicht in UnicastRemoteObject implementierungen.(*flüster* zu gefährlich, schlechte Erfahrungen).
Das Datum das in MYsql liegt kann nicht von java verwendet werden.
Ich muss über das UNIX Timestamp gehen.
Das Datum das in MYsql liegt kann nicht von java verwendet werden.
Ich muss über das UNIX Timestamp gehen.
Zitat
Original von narfnarf
hmm, warum benutzt du irgendwelche oracle-Klassen, wenn du eine MySQL laufen hast?
Ich würde das so machen:
![]()
Quellcode
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17import java.sql.Date; // ... private Date einDatum; // java.sql.Date // ... Connection con = ConnectionManager.newConnection(); Statement stmt = con.createStatement(); ResultSet rst = stmt.executeQuery("SELECT datum FROM tabellenname WHERE irgendwas); while(rst.next()){ einDatum = rst.getDate("datum"); // oder rst.getDate(1); achtung, beim rst wird bei 1 angefangen zu zählen! } // ... long timestamp = einDatum.getTime();
macht da MySQL was falsch, oder warum geht java.sql.Date nicht (also nicht java.util.Date, dass das nicht geht ist ja klar...)? Weil java.sql.Date liefert ja problemlos nen Timestamp.
Und ConnectionManager hin oder her, macht ohne auch nur etwas mehr handarbeit am anfang.
Und ConnectionManager hin oder her, macht ohne auch nur etwas mehr handarbeit am anfang.
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »narfnarf« (18. Mai 2005, 16:15)
Zitat
Original von nocturne
[...]
meine Frage nochmal: Wie erstelle ich in java anhand eines timestamp eine instanzvariable vom typ "Date"?
Also nochmal:
Erstens, ich rede von java.sql.Date, nicht von java.util.Date. Die sind unterschiedlich, und was wie mit java.util.Date geht weiss ich nicht. java.sql.Date sollte aber mit SQL-konformen Datumsangaben umgehen können (java.sql.Date einDatum = rst.getDate(...)
....und mit long timestamp = einDatum.getTime(); bekommst du einen Timestamp.
mit
long timestamp = irgendwas;
einDatum.setTime(timestamp);
oder aber java.sql.Datum einDatum = new java.sql.Datum(timestamp);
bekommst du ein Datum aus einem Timestamp...
Steht auch alles in den API drin...
und da du ja mit Eclipse arbeitest: einfach mit Strg+Leertaste mal suchen...da findet sich doch immer ne passende Methode.
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »narfnarf« (18. Mai 2005, 22:25)


