# Problem bei MySql abfrage



## sieger12 (8. Aug 2007)

hallo,
ich habe eine abfrage in der ich 2 werte vergleichen möchte:

habe es so versucht:

```
statement.executeUpdate("UPDATE  machines Set m_online ='1' where m_sender_id Like "+SsenderId);
```
und so:


```
statement.executeUpdate("UPDATE  machines Set m_online ='1' where m_sender_id Like "+SsenderId);
```


wenn in "SsenderId" nur eine ziffernfoilge steht(2568) funktioniert es wunderbar.
es besteht aber auch die möglichkeit das eine ip adresse verglichen werden muss.
da kommt er nicht mit klar.

zb. 192.168.0.12t

dann bekomme ich die fehlermeldung : 

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '.0.12t' at line 1



wie kann ich das am besten machen ? oder wo liegt mein fehler ??

vielen dank !!!
gruß


----------



## sieger12 (8. Aug 2007)

das zweite sollte :


```
statement.executeUpdate("UPDATE  machines Set m_online ='1' where m_sender_id ="+SsenderId);
```

heissen.


----------



## SlaterB (8. Aug 2007)

warum postest du deinen Java-Code?
in erster Linie ist es doch mal interessant, wie das korrekte SQL aussieht

und dann ist ja nun wichtig, was  m_sender_id ist, ein VarChar oder so?
dann musst du LIKE 'text' schreiben


----------



## kasi (8. Aug 2007)

Bedenke, dass LIKE eine String Funktion siehe Doku. Man kann sie auch mit Zahlenwerten vergleichen, aber sicher wäre das Vorgehen von SlaterB. 

Außerdem ist die erste Anfrage relativ sinnlos, weil du like verwendest, ohne einen variablen Teil (meine % oder .), die Anfrage wäre also schneller, wenn du nur "=" verwendest, also Anfrage 2.

Grüße


----------



## sieger12 (8. Aug 2007)

ja also
m_senderId:

m_sender_id --> varchar(100) --> utf8_bin 

und SsenderId ist ein String.

aber trotzdem meckert er wenn er die ip adresse vergleichen soll. hängt das mit den punkten zusammen ? aber das dürfte doch eig keine rolle spielen oder? ?

danke


----------



## SlaterB (8. Aug 2007)

es wurde alles gesagt, und sogar noch begründet (kasi),
wenn du nun deine Frage noch mal wiederholst, bringt das das Problem nicht weiter 

wie komsmt du darauf, dass Punkte in der Welt keine Rolle spielen? doch sie spielen eine Rolle


----------



## Guest (8. Aug 2007)

also er meckert sobald da buchstaben entahlten sind ("hanst") zb.

dann kommt die fehlermeldung:

com.mysql.jdbc.exceptions.MySQLSyntaxErrorException: Unknown column 'hanst' in 'where clause'


SsenderId ='hanst' 

Datenbank:

      27 0 hanst 
      28 0 hansn


----------



## tuxedo (8. Aug 2007)

Strings werden so benutzt --> "meinString" <-- 

Wenn du das so machst wie du es gemacht hast versucht MySQL zwei Spalten miteinander zu vergleichen, und das schlägt bei dir nunmal fehl.

- Alex


----------



## Guest (8. Aug 2007)

vielen dank @alex0801 jetzt läufts !!


----------



## kasi (8. Aug 2007)

das hättest auch gestern haben können slater:"dann musst du LIKE 'text' schreiben".. 

nunja, bitte setze den erledigt hacken. danke


----------



## SlaterB (8. Aug 2007)

anscheinend war ja noch ein Problem mit einfachen oder doppelten Anführungszeichen?
wie auch immer


----------



## HoaX (8. Aug 2007)

mit einem preparedstatement wäre das nicht passiert


----------

