Callablestatement setString - Nicht unterstützte Zeichen (s)?
-
05-07-2019 - |
Frage
Ich habe eine Java-Anwendung decodiert ein UTF-8 kodierten String
über den Draht empfangen und es zu einer varchar
Spalte in der Datenbank (SQL Server 2000) zu speichern. Ich spare den Datensatz mit JDBC des CallableStatement
(die setString
Methode Aufruf der Parameter für diese Spalte zu setzen).
Das Problem ist, ich sehe, dass ein bestimmtes String
geschrieben wurde, die ASCII-Wert 0 (NUL
) enthält. Dies legt nahe, mir, dass SQL Server kann nicht ein bestimmtes Unicode-Zeichen und die JDBC-Treiber darstellen hat mich entschieden, in ASCII-Wert 0, zu ersetzen, obwohl ich falsch sein kann.
- Hat jemand anderes dieses Problem gestoßen?
- Sie haben einen Mechanismus ich verwenden kann, die
CallableStatement
Aufruf verursachen in dieser Situation zum Scheitern verurteilt?
Im Idealfall würde Ich mag, dass Daten gewährleisten haben genau gespeichert, wie angegeben, oder „nicht bestehen schnell“.
Mein Datenbank-Zeichensatz ist Latin1_General_AS_CS
.
Vielen Dank im Voraus.
Lösung
Sie müssen 'NVARCHAR' Typen in der Datenbank werden.
Andere Tipps
Nur eine WAG, würde aber mit .setBytes(String parameterName, byte[] x)
Trick? Der Byte-Array würde aus myString.getBytes()
. Sie könnten unter Verwendung mit verschiedenen Zeichensätzen mit getBytes()
auch versuchen.