CallableStatement setString - ¿Caracteres no compatibles?
-
05-07-2019 - |
Pregunta
Tengo una aplicación Java que decodifica una String
UTF-8 recibida a través del cable y la guarda en una columna varchar
en mi base de datos (SQL Server 2000). Estoy guardando el registro usando el CallableStatement
de JDBC (llamando al método setString
para establecer el parámetro para esta columna).
El problema que veo es que se ha escrito una String
particular que contiene el valor ASCII 0 ( NUL
). Esto me sugiere que el servidor SQL no puede representar un carácter Unicode particular y que el controlador JDBC ha decidido sustituirlo en el valor ASCII 0, aunque puedo estar equivocado.
- ¿Alguien más ha encontrado este problema?
- ¿Hay algún mecanismo que pueda usar para hacer que la llamada
CallableStatement
falle en esta situación?
Idealmente, me gustaría garantizar que los datos se hayan guardado exactamente como se especifica o, de lo contrario, "fallará rápidamente".
El juego de caracteres de mi base de datos es Latin1_General_AS_CS
.
Gracias de antemano.
Solución
Debe usar el tipo 'NVARCHAR' en la base de datos.
Otros consejos
Solo un WAG, pero si usara .setBytes (String parametersName, byte [] x)
, ¿es correcto? La matriz de bytes provendría de myString.getBytes ()
. Es posible que desee utilizar diferentes juegos de caracteres con getBytes ()
, también.