CallableStatement setString - Caractère (s) non pris en charge?
-
05-07-2019 - |
Question
J'ai une application Java qui décode une chaîne
encodée en UTF-8 et l'enregistre dans une colonne varchar
de ma base de données (SQL Server 2000). Je sauvegarde l'enregistrement à l'aide du CallableStatement
de JDBC (en appelant la méthode setString
pour définir le paramètre de cette colonne).
Le problème que je vois est qu’un String
particulier contenant la valeur ASCII 0 ( NUL
) a été écrit. Cela me suggère que SQL Server ne peut pas représenter un caractère Unicode particulier et que le pilote JDBC a décidé de remplacer la valeur ASCII par 0, bien que je puisse me tromper.
- Quelqu'un at-il rencontré ce problème?
- Existe-t-il un mécanisme que je peux utiliser pour provoquer l'échec de l'appel
CallableStatement
dans cette situation?
Idéalement, je voudrais garantir que les données ont été sauvegardées exactement comme spécifié ou sinon, "échec rapide".
Mon jeu de caractères de la base de données est Latin1_General_AS_CS
.
Merci d'avance.
La solution
Vous devez utiliser le type "NVARCHAR" dans la base de données.
Autres conseils
Juste un WAG, mais l'utilisation de .setBytes (String parameterName, byte [] x)
ferait-elle une ruse? Le tableau d'octets proviendrait de myString.getBytes ()
. Vous voudrez peut-être aussi utiliser différents jeux de caractères avec getBytes ()
.