# Date null = 30.11.0002?



## hamburger_1983 (18. Sep 2007)

Hallo,

ich habe ein Formular, wo die darin beinhalteten Daten in eine MySQL-Datenbank gespeichert werden soll.


```
if (sdate.equals("")||sdate.equals("Kein Startdatum")) {
			dateStart = null;
		}
		else {
			dateSTemp = convertFromStringToDate2(sdate);
			dateStart = sdf.format(dateSTemp);
		}
```

sdate = Übergebener Datumsstring (Bsp. 18.09.2007)

Wenn ein leeres Textfeld, bzw. der String "Kein Startdatum" übergeben wird, dann soll er in die Datenbank als Wert null eintragen.



> Anmerkung: Der String "Kein Startdatum" wird erzeugt, wenn beim Auslesen der Datenbank null als Wert hinterlegt ist.



Der Weg klappt prima. Auch klappt die reibungslose Anzeige eines eingetragenen Datums. Nun soll es aber umgekehrt auch funktionieren.

Wenn ein Datum eingetragen ist, wird es ohne Probleme abgespeichert. Nur speichert er bei einem leeren Textfeld, bzw. bei dem oben erwähnten String den Wert 0002-11-30 in der Datenbank, anstatt null, wie er eigentlich sollte.[/code]


----------



## SlaterB (18. Sep 2007)

soviel Text und so wenig Info,

was hast du denn für ein Kommando? einen SQL-String + einfaches Statement oder ein Prepared Statement oder?
kommt "0002-11-30" aus dem SimpleDateFormat heraus oder wo genau?


----------



## hamburger_1983 (18. Sep 2007)

Dann poset ich mal den komplette Quelltext


```
public void saveTestRun(Long ID, String sdate, ...) throws SQLException {

Date dateSTemp;
...
String dateStart;
...
String pattern = "yyyy-MM-dd";
SimpleDateFormat sdf = new SimpleDateFormat(pattern);
		
if (sdate.equals("")||sdate.equals("Kein Startdatum")) {
	dateStart = null;
}
else {
	dateSTemp = convertFromStringToDate2(sdate);
	dateStart = sdf.format(dateSTemp);
}

// weitere, äquivalente Abfragen
...

Connection conn = JDBCConnectionFactory.getConnection();
Statement stmt = conn.createStatement();
String sqlAbfrage = "UPDATE probefahrt SET startDatum='" + dateStart + "', ... "' WHERE ID = '" + ID + "'";

stmt.executeUpdate(sqlAbfrage);

}
```

Hoffe das reicht als weitere Information

Das Datum (30.11.0002) wird dann vom SQL-Statement in die Datenbank gesteckt


----------



## SlaterB (18. Sep 2007)

du wunderst dich also allen Ernstes, warum
UPDATE probefahrt SET startDatum='null'
etwas anderes bewirkt als
UPDATE probefahrt SET startDatum=null
?

gut, mich wundert auch, dass es nicht einfach eine Exception gibt 

brauchst du noch Tipps, was du nun machen musst?


wenn dein SQL-String dagegen 
UPDATE probefahrt SET startDatum='0002-11-30'
lautet (mit System.out.println testen!), dann kann noch weiterüberlegen,
ist dann aber wohl kaum ein JDBC-Problem


----------



## hamburger_1983 (18. Sep 2007)

Sag jetzt nicht, es liegt an sowas triviales wie Anführungsstrichen?


----------



## SlaterB (18. Sep 2007)

testen..


----------



## tuxedo (18. Sep 2007)

hamburger_1983 hat gesagt.:
			
		

> Sag jetzt nicht, es liegt an sowas triviales wie Anführungsstrichen?



So trivial scheints ja nicht zu sein ;-)


----------

