# in datenbank schreiben



## steff3 (12. Apr 2006)

```
String sqlQ = "UPDATE Semester1 SET iPlaetze = 80 ";
stmt.executeUpdate(sqlQ);
```

das funktioniert ...
wie kann ich aber angeben, dass ich nicht die ganze Spalte überschreiben haben will?

sondern vlt. beim 3 und 10 eintrag oder so ähnlich


----------



## Caffè Latte (12. Apr 2006)

Hi,

du musst dein SQL-Statement um eine WHERE-Klausel erweitern. Nun weiss ich nicht, wie man den 3. oder 10. Datensatz bei dir finden kann. Am besten ist immer mit dem Primärschlüssel zu arbeiten. Der String sähe dann so aus:


```
String sqlQ = "UPDATE Semester1 SET iPlaetze = 80 WHERE ID = 3 OR ID = 10";
```

wobei ID der Schlüssel wäre.


----------



## steff3 (12. Apr 2006)

ich habe aber keinen schlüssel gesetzt 

und warum geht es nicht einfach zu sagen in spalte x in der zeile 7,2 und 13 bitte ändern?


----------



## Caffè Latte (12. Apr 2006)

steff3 hat gesagt.:
			
		

> ...
> und warum geht es nicht einfach zu sagen in spalte x in der zeile 7,2 und 13 bitte ändern?



Frag die, die SQL entwickelt haben.  Wahrscheinlich weil die "Zeilennummern" sich ändern können.

Wenn du keinen Schlüssel hast, dann musst du eben ein anderes einmaliges Kriterium finden, dass die Datensätze kennzeichnet. Wie sieht denn sie Struktur der Tabelle aus?


----------



## steff3 (12. Apr 2006)

Caffè Latte hat gesagt.:
			
		

> steff3 hat gesagt.:
> 
> 
> 
> ...



bevor ich groß erkläre...


----------



## Caffè Latte (12. Apr 2006)

Hi,

das eindeutige Feld wäre dann wohl "SSportkurs". Also würde dasSQL-Statement dann so lauten:


```
UPDATE Semester1 SET iPlaetze = 80 WHERE SSportkurs = 'Fussball' OR SSportkurs = 'Leichtatlethik'
```

Wenn du z.B. die dritte Zeile akualisieren willst, dann musst du ja wissen warum, also dass es sich dort um Volleyball handelt. Ggf. musst du SSportart eben vorher abfragen. In der Praxis hängt die Teilnehmerzahl aber nicht von der Sportart sondern den Räumlichkeiten u.ä. ab.


----------



## steff3 (12. Apr 2006)

Caffè Latte hat gesagt.:
			
		

> Hi,
> 
> das eindeutige Feld wäre dann wohl "SSportkurs". Also würde dasSQL-Statement dann so lauten:
> 
> ...



naja es stehen nur x plätze für jede sportart zur verfügung und das ist festgelegt...

zu dem wort Leichtathletik sag ich mal nichts  :meld:


----------



## Caffè Latte (12. Apr 2006)

... das produziert aber keinen SQL-Fehler. Es wird eben nur Fussball upgedatet ...


----------



## Bootenks (16. Apr 2006)

@steff3: am klügsten wäre wenn du dir einen Primary Key verschaffst möglichst unique ansonsten ensteht schnell eine inkonsistente RDB! (MySql ist auch nur für Testzwecke der Burner... Nutz lieber Postgres das ist auch OpenSource!)

Auf deine Frage aber nochmal zurückzukommen:

um sich die OR's zu ersparen nutzt man die IN Syntax, das geht besser und ist übersichtlicher aber ansonsten hat Caffé Latte recht. 

IN Syntax:


```
WHERE Ssportkurs IN ( Fussball, Leichtathletik )
```


----------

