cayenne-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Dov Rosenberg <drosenb...@inquira.com>
Subject Re: MS SQL Server Unicode Support
Date Tue, 19 Sep 2006 21:44:54 GMT
I ran into this on the EOF side so I assumed that I would have the same
issue on the Cayenne side. How it manifested itself on the EOF side was the
insert appeared to work correctly until we logged out and then reconnected
with our WO app. Once we reconnected and went back to the record that we
just inserted we saw that the chinese characters that looked good before now
all showed ????. We checked the database and saw that the characters were
stored as ???? As well.

I will try this with the cayenne stuff to verify - but since it looks like
EOF also generates prepared statements I think the problem will occur here
as well




On 9/19/06 5:26 PM, "Andrus Adamchik" <andrus@objectstyle.org> wrote:

> Yeah, I would think this has to be abstracted in the JDBC layer. Dov,
> do you have any specific problems that make you believe that this is
> broken?
> 
> Andrus
> 
> 
> On Sep 19, 2006, at 5:20 PM, Tore Halset wrote:
> 
>> Hello.
>> 
>> We are using MS SQL Server with cayenne. nvarchar works with the
>> old (have not tried latest as we moved to jtds) ms jdbc driver and
>> jtds without problems. Perhaps the prepared statement handles it
>> automatically as cayenne creates prepared statements?
>> 
>>  - Tore.
>> 
>> On Sep 19, 2006, at 23:12, Dov Rosenberg wrote:
>> 
>>> We are using Cayenne for some web services alongside our EOF based
>>> application. Our application supports unicode formatted characters
>>> in the
>>> database but in order to support it properly using MS SQL Server
>>> apparently
>>> we need to change our data types from char, varchar, text to nchar,
>>> nvarcahr, ntext. This is no big deal. However in order to properly
>>> store the
>>> data into those fields and to be able to query against them we
>>> need to
>>> preface all of the strings with a N ­ this signals MSSQL Server to
>>> use the
>>> Unicode encoding for that column. For example say we have a table:
>>> 
>>> CREATE TABLE "CONTENTDATA" (
>>>     RECORDID    NVARCHAR(64)        NOT NULL ,
>>>     XML         NTEXT               NULL ,
>>>     CONSTRAINT PK_CONTENTDATA PRIMARY KEY (RECORDID)
>>> );
>>> 
>>> In order to insert unicode characters into that table I need to
>>> generate a
>>> SQL statement like:
>>> 
>>> INSERT into CONTENTDATA (RECORDID, XML) values (N¹1234ABC¹,
>>> N¹<MYXML>....</MYXML>¹);
>>> 
>>> Notice the N in front of the strings I am inserting. In order to
>>> query on
>>> this table properly I need to add the N in front of the WHERE
>>> clause pieces
>>> such as:
>>> 
>>> SELECT * from CONTENTDATA where xml like N¹<MYXML>%¹;
>>> 
>>> I only need to put the N when the data contains unicode characters
>>> ­ but I
>>> really won¹t know that so I probably need to do it all of the time.
>>> 
>>> I am looking for the correct place in both cayenne and EOF to add
>>> the N¹ to
>>> the queries (INSERTs, and WHERE clauses). Any help or suggestions
>>> would be
>>> HIGHLY appreciated.
>>> 
>>> BTW ­ it seems that Oracle can at least tolerate this unusual SQL
>>> format.
>>> MSFT says that it is SQL 92 compliant but I haven¹t found anything
>>> documenting it yet.
>>> 
>>> 
>>> 
>>> -- 
>>> Dov Rosenberg
>>> Conviveon/Inquira
>>> Knowledge Management Experts
>>> http://www.conviveon.com
>>> http://www.inquira.com
>>> 
>>> 
>> 
>> 
> 

-- 
Dov Rosenberg
Inquira Inc
370 Centerpointe Circle, ste 1178
Altamonte Springs, FL 32701
(407) 339-1177 x 102
(407) 339-6704 (fax)
(407) 310-8316 (cell)
drosenberg@inquira.com
AOL IM: dovrosenberg



Mime
View raw message