Webmaster Forum Logo Part 1 Webmaster Forum Logo Part 2
Webmaster Forum Logo Part 3
     
 
  :: Anmeldung

Benutzername:

Registrierung...

Passwort:

Passwort vergessen?

angemeldet bleiben


  
  :: Umfrage
Welche sozialen Netzwerke benutzt du regelmäßig?

 Facebook
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 73%
 keines
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 22%
 Google+
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 19%
 Twitter
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 11%
 Xing
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 6%
 schülerVZ
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 5%
 meinVZ
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 4%
 studiVZ
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 4%
 MySpace
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 2%
 LinkedIn
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 2%

 ges. 392 Stimmen
 
  :: Buttons

Valid XHTML 1.0 Transitional

nocturne

Kaiser

Dabei seit: 06.01.2005

Beiträge: 1 167

 

1 Zum Seitenanfang

Mittwoch, 18. Mai 2005, 15:03

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)
[]
 

narfnarf

Haudegen

Dabei seit: 30.11.2002

Beiträge: 678

 

2 Zum Seitenanfang

Mittwoch, 18. Mai 2005, 15:22

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
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)

 

nocturne

Kaiser

Dabei seit: 06.01.2005

Beiträge: 1 167

 

3 Zum Seitenanfang

Mittwoch, 18. Mai 2005, 16:03

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.


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
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();
 

narfnarf

Haudegen

Dabei seit: 30.11.2002

Beiträge: 678

 

4 Zum Seitenanfang

Mittwoch, 18. Mai 2005, 16:14

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.

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »narfnarf« (18. Mai 2005, 16:15)

 

nocturne

Kaiser

Dabei seit: 06.01.2005

Beiträge: 1 167

 

5 Zum Seitenanfang

Mittwoch, 18. Mai 2005, 16:46

keine ahnung wo der fehler liegt, anscheinend kann die primitivklasse "Date" das format von mysql nicht verstehen.
Einige funktionieren aber bei "2004-02-31" wirft java eine ausnahme.

meine Frage nochmal: Wie erstelle ich in java anhand eines timestamp eine instanzvariable vom typ "Date"?
 

narfnarf

Haudegen

Dabei seit: 30.11.2002

Beiträge: 678

 

6 Zum Seitenanfang

Mittwoch, 18. Mai 2005, 22:24

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)

 

nocturne

Kaiser

Dabei seit: 06.01.2005

Beiträge: 1 167

 

7 Zum Seitenanfang

Donnerstag, 19. Mai 2005, 08:57

Danke, hatt geholfen.
java.sql.Date(lfrom); kann man auf java.util.Date anwenden.

Das erklärt, warum einige mysql datumsangaben in java nicht funktionieren.