Wie macht man UTF-8 Vergleiche?

mtun

Mitglied
Hi, meine Datenbank ist in "utf8 - default_collation".
wenn ich nun folgendes ausführe:
Java:
String sqlCommand = "SELECT Spalte  FROM Tabelle";
ResultSet rs = stmt.executeQuery(sqlCommand);
rs.next();
String inhalt = rs.getString("Spalte");
System.out.println(inhalt);
stmt.close();
          
sqlCommand="UPDATE Tabelle SET andererInhalt = 42 WHERE Spalte="+inhalt;
stmt = (Statement) conn.createStatement();
stmt.execute(sqlCommand);
stmt.close();
bekomme ich als Ausgabe:
Code:
A
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown column 'A' in 'where clause'
wenn ich eine int spalte nehme gehts. Problem liegt dabei, dass ich mit "WHERE Spalte=A" kein Ergebniss bekomme obwohl die Spalte als Inhalt "A" hat, halt nur in utf-8 gespeichert.
Wisst ihr wie das zu beheben geht? (brauche utf-8)
 
Zuletzt bearbeitet:
Ich glaube nicht, dass es am utf-8 liegt.
Die Fehlermeldung sagt ja "Unknown column 'A'", also wird der Inhalt, den du abfragst, als Spalte angenommen. Das wird daran liegen, dass du inhalt in dem Query nicht als String gekennzeichnet hast, so:

Code:
"WHERE `Spalte` LIKE '"+inhalt+"'";

Bei deinem Beispiel würde ja dann real
Code:
UPDATE Tabelle SET andererInhalt = 42 WHERE Spalte=A

stehen (also ein Vergleich zweier Spalten), bei o.g.:

Code:
UPDATE Tabelle SET andererInhalt = 42 WHERE Spalte LIKE 'A'

Deswegen klappt es bei dir auch nur mit int-Werten.
 

Neue Beiträge

Zurück