CallableStatement setString - Caratteri non supportati?
-
05-07-2019 - |
Domanda
Ho un'applicazione Java che decodifica un String
codificato UTF-8 ricevuto via cavo e lo salva in una colonna varchar
nel mio database (SQL Server 2000). Sto salvando il record usando CallableStatement
di JDBC (chiamando il metodo setString
per impostare il parametro per questa colonna).
Il problema che vedo è che è stato scritto un particolare String
che contiene il valore ASCII 0 ( NUL
). Questo mi suggerisce che il server SQL non può rappresentare un particolare carattere Unicode e che il driver JDBC ha deciso di sostituire il valore ASCII 0, anche se potrei sbagliarmi.
- Qualcun altro ha riscontrato questo problema?
- Esiste un meccanismo che posso usare per far fallire la chiamata
CallableStatement
in questa situazione?
Idealmente, vorrei garantire che i dati siano stati salvati esattamente come specificato, oppure "fallire velocemente".
Il set di caratteri del mio database è Latin1_General_AS_CS
.
Grazie in anticipo.
Soluzione
È necessario utilizzare il tipo "NVARCHAR" nel database.
Altri suggerimenti
Solo un WAG, ma usando .setBytes (String parameterName, byte [] x)
sarebbe un trucco? L'array di byte verrebbe da myString.getBytes ()
. Potresti provare a usare diversi set di caratteri anche con getBytes ()
.