Hallo zusammen,
ich habe ein etwas unschönes Phänomen und weiss nicht woher das kommt. Vielleicht könnt Ihr mir dabei helfen.
Ich habe eine MySQL Datenbank, auf die ich mittels Java zugreife. Als Entwicklungsumgebung verwende ich Eclipse.
Grundlegend sind Verbindungsaufbau und Abfragen gar kein Problem, alles funktioniert so wie es soll.
Einzig die query "SELECT NOW();" bereitet mir Kopfzerbrechen, hier habe ich das Phänomen, dass ich nicht das Ergebnis bekomme, was ich erwarte.
Ich erwarte
'2010-01-14 09:15:18'
Ich bekomme
'2010-01-14 09:15:18.0'
Aus irgend einem Grund bekomme ich an die Sekunden am Ende ein '.0' angehängt, welches ich an dieser Stelle nicht erwarte.
Ich habe unter phpMyAdmin ein select now() auf die selbe Datenbank losgelassen, hier kommt das korrekte Ergebnis.
Ich verwende folgende Methode, um das Datum aus der Datenbank zu lesen:
Und hier ein Beispielaufruf:
(Für dieses Beispiel gekürzte Fassung)
Ausgabe ist:
2010-01-14 09:15:18.0
Ich habe auch testweise ein
System.out.println(rs.getString(j+1));
in die obere Methode geschrieben. Ausgabe ist dann:
2010-01-14 09:15:18.0
2010-01-14 09:15:18.0
Ich bin für jede Idee dankbar, da ich leider keine Ahnung habe wo ich da noch suchen soll.
Ich kann in der weiterverarbeitenden Funktion das ganze zwar problemlos korrigieren und die .0 rausfiltern aber ich wüsste zuvor halt gerne wo die her kommen.
ich habe ein etwas unschönes Phänomen und weiss nicht woher das kommt. Vielleicht könnt Ihr mir dabei helfen.
Ich habe eine MySQL Datenbank, auf die ich mittels Java zugreife. Als Entwicklungsumgebung verwende ich Eclipse.
Grundlegend sind Verbindungsaufbau und Abfragen gar kein Problem, alles funktioniert so wie es soll.
Einzig die query "SELECT NOW();" bereitet mir Kopfzerbrechen, hier habe ich das Phänomen, dass ich nicht das Ergebnis bekomme, was ich erwarte.
Ich erwarte
'2010-01-14 09:15:18'
Ich bekomme
'2010-01-14 09:15:18.0'
Aus irgend einem Grund bekomme ich an die Sekunden am Ende ein '.0' angehängt, welches ich an dieser Stelle nicht erwarte.
Ich habe unter phpMyAdmin ein select now() auf die selbe Datenbank losgelassen, hier kommt das korrekte Ergebnis.
Ich verwende folgende Methode, um das Datum aus der Datenbank zu lesen:
Java:
public final class DBHandle
{
[...]
public final DBAbfrageErgebnis selectFromDataBase(String query, DBDatenTypen[] typen)
{
if(open == false)
return null;
if(typen.length <= 0)
return null;
Statement stmt;
try
{
stmt = con.createStatement();
}
catch(SQLException e)
{
return null;
}
ResultSet rs;
try
{
rs = stmt.executeQuery(query);
}
catch(SQLException e)
{
try
{
stmt.close();
}
catch(SQLException f)
{
// Nix tun
}
return null;
}
DBAbfrageErgebnis ergebnis = new DBAbfrageErgebnis();
try
{
while (rs.next())
{
ergebnis.neueZeile();
for (int j = 0; j < typen.length; j++)
{
switch (typen[j])
{
case LONG:
ergebnis.addLong(new Long(rs.getLong(j + 1)));
break;
case DOUBLE:
ergebnis.addDouble(new Double(rs.getDouble(j + 1)));
break;
case BOOLEAN:
ergebnis.addBoolean(new Boolean(rs.getBoolean(j + 1)));
break;
case STRING:
ergebnis.addString(rs.getString(j + 1)); // An dieser Stelle wird
break;
default:
throw new SQLException();
}
}
}
}
catch(SQLException e)
{
try
{
rs.close();
}
catch(SQLException f)
{
// Nix tun
}
try
{
stmt.close();
}
catch(SQLException f)
{
// Nix tun
}
return null;
}
ergebnis.gefuellt(); // Keiner weiteren Aenderungen am Ergebnis moeglich
try
{
rs.close();
}
catch(SQLException e)
{
try
{
stmt.close();
}
catch(SQLException f)
{
// Nix tun
}
return null;
}
try
{
stmt.close();
}
catch(SQLException e)
{
return null;
}
return ergebnis;
}
}
Und hier ein Beispielaufruf:
(Für dieses Beispiel gekürzte Fassung)
Java:
private lese Datum()
{
DBAbfrageErgebnis ergebnis = dbhandle.selectFromDataBase("SELECT NOW();", DBDatenTypen.STRING);
System.out.println(ergebnis.getString());
}
Ausgabe ist:
2010-01-14 09:15:18.0
Ich habe auch testweise ein
System.out.println(rs.getString(j+1));
in die obere Methode geschrieben. Ausgabe ist dann:
2010-01-14 09:15:18.0
2010-01-14 09:15:18.0
Ich bin für jede Idee dankbar, da ich leider keine Ahnung habe wo ich da noch suchen soll.
Ich kann in der weiterverarbeitenden Funktion das ganze zwar problemlos korrigieren und die .0 rausfiltern aber ich wüsste zuvor halt gerne wo die her kommen.