# Umlaut-Problem mit Firebird Datenbanken



## Gast (15. Mai 2006)

Also ich habe ein Problem: :bahnhof: 

Ich greife mit Java auf eine Firebird-DB zu und versuche mir die ID eines Eintrages zu holen und zwar anhand der Description die u.a. auch Umlaute enthält und bekomme dabei jedesmal wenn eine Umlaut in der Description ist eine SQLException geworfen.
Allerdings nur wenn ein Umlaut enthalten ist, ansonsten funktioniert das ganze einwandfrei.

 ???:L 
Kann mir irgendjemand helfen ?

mfG kali


----------



## thE_29 (15. Mai 2006)

Genaue Exception?

Was meinst du mit Description?

Schon gegoogelt?


----------



## Guest (16. Mai 2006)

hab mich zu schlecht ausgedrückt:

Meine Table sieht so aus:
VARCHAR PK ID
VARCHAR PARENT
VARCHAR DESCRIPTION

und ich möchte über die description die jeweilige id herausfinden. und in der description kommen auch umlaute vor und das ist mein problem.

ich schätze das es mit der codierung zu tun hat.

aber wie stelle ich mich auf die unterschiedlichen codierungen ein?


----------



## Guest (16. Mai 2006)

ach ja und Dr. Google hat mir auch nichts wirklich positives geliefert


----------



## SamHotte (17. Mai 2006)

Irgendwie ist meine Glaskugel defekt ... Wie genau probierst du es denn? Und was für ein Fehler kommt?


----------



## Gast (18. Mai 2006)

So greife ich darauf zu:

String sqlQuery="SELECT TREE.id from TREE where TREE.description = '"+parent+"';";
try
{
     rSet = s.executeQuery(sqlQuery);
     rSet.next();
     id = rSet.getString(1);
}
catch(SQLException sqlE)
{
     System.out.println("Fehler beim Herausfiltern der IDs der Leafs: "+sqlE);
}


und meine exception:

java.sql.SQLException: arithmetic exception, numeric overflow, or string truncation
Cannot transliterate character between character sets

funktioniert deine glaskugel jetzt wieder?  =)


----------



## thE_29 (18. Mai 2006)

Machs mit einem preparedstatement!

Das sollte klappen!

Der parst dann das richtig rein!

Wenn du net weißt die preparedstatements klappen, such im Board, aber trotzdem schreibe ichs dir her (bin ja mal net so :bae


```
String sqlQuery = "SELECT TREE.id FROM TREE where TREE.description = ?";
PreparedStatement pstm = null;
Connection conn = getCon(); //also das hier ist halt dein Verbindung
ResultSet rSet = null;
try{
pstm =     conn.prepareStatement(sqlQuery);
pstm.setString(1,parent);
rSet = pstm.executeQuery();
//wie gehabt weiter...
rSet.close(); //resultsets, statements und prepstatements immer zumachen!!
pstm.close(); 
}
catch(....)
...
```


----------



## SamHotte (18. Mai 2006)

1. jepp, genau den Tipp wie the_29 hätte ich auch erteilt
2. Umlaute zu benutzen ist schon bei Java nicht so toll, bei SQL würde ich darauf generell verzichten ... die meisten Produkte sind amerikanischen Ursprungs und nicht auf derartige Spezialitäten ausgelegt.


----------



## Gast (19. Mai 2006)

Danke schon mal im vorraus.

ich hab zwar noch keine zeit gehabt es zu probieren aber wenn du es sagst wird es scho funktionieren!
 :toll: 

aber wo genau ist eigentlich der unterschied zwischen den 2 versionen?  ???:L


----------

