CallableStatement setString - caráter não suportado (s)?
-
05-07-2019 - |
Pergunta
Eu tenho um aplicativo Java decodificação de um String
codificado UTF-8 recebeu sobre o fio e salvá-lo em uma coluna varchar
no meu banco de dados (SQL Server 2000). Estou salvando o registro usando CallableStatement
do JDBC (chamando o método setString
para definir o parâmetro para esta coluna).
O problema que eu estou vendo é que uma String
particular, tem sido escrito que contém o valor ASCII 0 (NUL
). Isto sugere-me que servidor SQL não pode representar um caractere Unicode particular e do driver JDBC decidiu substituto no valor ASCII 0, embora eu possa estar errado.
- Tem mais alguém encontrou este problema?
- Existe um mecanismo que posso usar para causar a chamada
CallableStatement
a falhar nesta situação?
Idealmente, eu gostaria de garantia de que os dados foram salvos exatamente como especificado, ou então "falhar rapidamente".
O meu conjunto de caracteres de banco de dados é Latin1_General_AS_CS
.
Agradecemos antecipadamente.
Solução
Você precisa estar usando tipo 'NVARCHAR' no banco de dados.
Outras dicas
Apenas um WAG, mas usando .setBytes(String parameterName, byte[] x)
que truque? A matriz de bytes viria de myString.getBytes()
. Você pode querer tentar usar usando diferentes conjuntos de caracteres com getBytes()
também.