# JDBC SQL Statement mit Parameter



## JIZZES (23. Dez 2015)

Guten Abend zusammen,

ich muss wieder was in meiner DB programmieren und komme gerade nicht wirklich weiter.

Ich habe ein SQL Statement geschrieben, was mir fast die gewünschte Ergebnismenge ausspuckt:


```
select Users.email, Gefallen, Title, artist, cover, Musics.url from Musics,tags,users  where tags.url = Musics.url and USERS.email =  tags.email;
```

ich hab anschließend probiert diesen quasi umzuschreiben:


```
static DTO first (String user){
...
select Users.email, Gefallen, Title, artist, cover, Musics.url from Musics,tags,users from Musics,Tags,Users  where tags.url = Musics.url and USERS.email = '"+ user +"' and  tags.email '" + user +"'");

... }
```
... funktioniert aber so dann doch nicht.

da ich schließlich nur Datensätze von bestimmten Usern anzeigen lassen möchte.

Der obige normale SQL Befehl spuckt mir jedoch alle User aus. Wie kann ich das so spezifizieren, dass ich nur einen bestimmten User (+ dessen Datensätze) erhalte?

Wenn ihr weitere Infos benötigt fragt ruhig 

vielen Dank!


----------



## fhoffmann (23. Dez 2015)

Das ist kein gültiges SQL:


JIZZES hat gesagt.:


> from Musics,tags,users from Musics,Tags,Users


----------



## JIZZES (23. Dez 2015)

```
SELECT tags.email, Gefallen, Title, artist, cover, musics.url FROM Musics,tags,users  WHERE tags.url = musics.url and Users.email =  tags.email;
```

sorry, hab beim bearbeiten einen Teil nicht überschrieben gehabt... den doppelten Teil einfach weglassen


----------



## fhoffmann (23. Dez 2015)

Und im jetzigen Code hast du wieder keine Einschränkung auf einen bestimmten User.


----------



## klauskarambulut (23. Dez 2015)

Never ever Parameter mit Plus in einen String einarbeiten um ein SQL-Statement zu generieren.

Immer PreparedStatements nutzen!

Das kann man aber selbst recherchieren, wie PreparedStatements  gehen und warum man diese nutzen muss.


----------



## JIZZES (24. Dez 2015)

tut mir leid, hab ich mittlerweile gefixed. Meine SQL Statements Skills waren ein bisschen eingerostet. Im Prinzip funktionieren auch normale Statements- war immer der Meinung, dass PreparedStatements für Update Anweisungen gebraucht werden. Habe anschließend bisschen nachgelesen und eben wie klauskrambulut fetgestellt, dass man diese auch da benutzen soll zwecks SQL Injections...

Egal. Zur Lösung:


```
"select TAGS.email, Gefallen, Title, artist, tag, Musics.url from Musics,tags  where tags.url = Musics.url and TAGS.email = '" + user + "'"
```

...liefert mir die gewünschten Ergebnismengen und funktioniert in meinem Code einwandfrei


----------



## JIZZES (24. Dez 2015)

Ich habe noch eine andere (kleinere) Frage: Ist es möglich, eine update-statement über mehrere Tabellen zu machen? Quasi:


```
UPDATE ARTIST,MUSICS SET....
```
 oder muss ich beide mit einem and verbinden?


----------



## stg (27. Dez 2015)

JIZZES hat gesagt.:


> Ich habe noch eine andere (kleinere) Frage: Ist es möglich, eine update-statement über mehrere Tabellen zu machen? Quasi:
> 
> 
> ```
> ...



Nein, das ist nicht möglich. 
Wozu sollte das auch gut sein?


----------

