Stötte på problem med att söka efter åäö i databasen (MySql). Kör därför nu med frågor i stil med "SELECT * FROM xxx WHERE word LIKE '%xxx%'.
Med Java så kör jag egentligen med PreparedStatement, så '%xxx%' byts ut mot ? och senare kör jag:
stmt.setString(1, "%" + ordet + "%");
Detta ställer till om jag söker efter ord som innehåller t ex "%". Finns det färdiga metoder för att "escapa" dessa tecken?
Vilka tecken bör man isf "escapa"?
Med escapa menar jag t ex \% om "5" finns i strängen.
Det där är, tyvärr, beroende på databasen. Vissa implementationer escapar automatiskt när man använder %, _, \ eller något annat specialtecken i en sträng. Det måste du nog slå upp i manualen till det lib du använder dig av.
I C hade jag använt funktionen real_escape_string() men jag vet inte hur det ser ut i den implementation du använder (MySQL Connector/J??).
Dock har jag för mig att det i specen för JDBC sägs att setString(int, String) ska göra escape på de specialtecken som databasen hanterar. Det är därför man använder sig av prepared statements och inte vanliga statements om man bara kan.
Hurru Lime, ISO-8859-1 är som namnet antyder en ISO-standard som precis lika gärna kan användas på Linux. Så det *borde* inte vara problemet, men om databasservern kör med någon annan teckenuppsättning (typ UTF-8) kan det knasa.
Hurru Lime, ISO-8859-1 är som namnet antyder en ISO-standard som precis lika gärna kan användas på Linux. Så det *borde* inte vara problemet, men om databasservern kör med någon annan teckenuppsättning (typ UTF-8) kan det knasa.
Jag sa ju "tror jag". Givetvis är den en standard. Frågan är bara: Har du någonsin sett det användas på något annat system än Windows? Jag har inte gjort det...