Re: sendStringParameterAsUnicode: How to insert unicode data correctly
- From: Joe Weinstein <joeNOSPAM@xxxxxxx>
- Date: Wed, 05 Sep 2007 09:28:42 -0700
sm wrote:
When inserting unicode data, we would like to programmatically override the setting and send the data encoded in unicode(UTF-16), instead of defaulting the whole app to unicode=true and take a performance hit.
Configuration: MS SQL server 2005 SP2, and MS jdbc driver version: 1.1
The sendStringParameterAsUnicode has been set to false for performance reasons. Any suggestions? We have tried the cast(? as nvarchar) function, but that did not help.
Sample code/output:
String text = "\u0143\u0144";
sendStringParametersAsUnicode=false
insert into unitable (_ntext) values (?)
Inserting into databse:
143 144 (printed hex values)
Read from database:
3f 3f (printed hex values)
Thanks,
sm.
Hi. Your choices are only two:
1 - the default (sendStringParameterAsUnicode=true). This
means the driver will send Java strings as 16-bit characters.
This is the default because Java characters are 16-bit, and
no driver would presume to automatically mutate your data.
2 - sendStringParameterAsUnicode=false. This means the driver
will send Java strings as 8-bit characters, *silently truncating
any high-byte content before sending*. That's why you saw what
you saw.
You want/need the first if your strings have chars with any
non-zero high-order bytes.
There is no performance issue to speak of in the *sending*
of data. The main issue is whether the DBMS will use the
table indexes when searching with the sent data as search
criteria. If data is sent as 16-bit, it will use any NVARCHAR
indexes, but not VARCHAR indexes. If it is sent as 8-bit, it
will use VARCHAR indexes, but not NVARCHAR.
So as long as you make sure you send the data as you need,
you're OK. If you send as 16-bit to compare to VARCHAR columns,
the DBMS will skip indexes and do table scans. That is where
the pain comes in.
Joe Weinstein at BEA Systems
.
- Prev by Date: RE: signer information does not match signer information of other clas
- Next by Date: Re: sendStringParameterAsUnicode: How to insert unicode data corre
- Previous by thread: RE: signer information does not match signer information of other clas
- Next by thread: Re: sendStringParameterAsUnicode: How to insert unicode data corre
- Index(es):
Relevant Pages
|