I find a error for oracle in Direct Mode about nvarchar2

Discussion of open issues, suggestions and bugs regarding UniDAC (Universal Data Access Components) for Delphi, C++Builder, Lazarus (and FPC)
daizhicun
Posts: 109
Joined: Thu 21 Jan 2010 11:49

I find a error for oracle in Direct Mode about nvarchar2

Post by daizhicun » Thu 04 Feb 2010 02:56

Hello.

I like use UniDAC.

I have use UniDAC make a oracle tools.

But just now, I find a bug for oracle in Direct Mode about nvarchar2

the Chinese can not show completely.



My UniConnection Set is :
object oraSession: TUniConnection
ProviderName = 'Oracle'
SpecificOptions.Strings = (
'Oracle.UseUnicode=True'
'Oracle.Direct=True')
Options.DisconnectedMode = True
LoginPrompt = False
Left = 168
Top = 128
end

Or:

object oraSession: TUniConnection
ProviderName = 'Oracle'
SpecificOptions.Strings = (

'Oracle.Direct=True')
Options.DisconnectedMode = True
LoginPrompt = False
Left = 168
Top = 128
end

they all can't show completely.

I use TOAD , it has Direct mode too.
It test it ,it has no this error.

I hope this is not a bug.
perhaps my TUniConnection or TUniQuery Set is not right.
if my set is not right .please how can i set it.


Image

Image

daizhicun
Posts: 109
Joined: Thu 21 Jan 2010 11:49

Post by daizhicun » Thu 04 Feb 2010 03:10

i test it at TOAD for oracle, KEEP TOOL for oracle .

thay all has direct mode.

but they show nvarchar2 fields is OK.

daizhicun
Posts: 109
Joined: Thu 21 Jan 2010 11:49

Post by daizhicun » Thu 04 Feb 2010 03:20

My environment is : delphi2010+UniDac3.00.0.5

daizhicun
Posts: 109
Joined: Thu 21 Jan 2010 11:49

Post by daizhicun » Thu 04 Feb 2010 04:15

I am sorry!

i have solved it.

My set is :
object oraSession: TUniConnection
ProviderName = 'Oracle'
SpecificOptions.Strings = (
'Oracle.Direct=True'
'Oracle.Charset=ZHS16GBK'
'Oracle.UseUnicode=True')
Options.DisconnectedMode = True
Username = 'OK3PL'
Password = 'OK3PL'
Server = '192.168.1.139:1521:OKADB'
LoginPrompt = False
Left = 168
Top = 128
end

in fact, we must add :
'Oracle.Charset=ZHS16GBK'
'Oracle.UseUnicode=True'

we can get Oracle.Charset from the registry in the client computer.

daizhicun
Posts: 109
Joined: Thu 21 Jan 2010 11:49

Post by daizhicun » Thu 04 Feb 2010 04:15

I am sorry!

i have solved it.

My set is :
object oraSession: TUniConnection
ProviderName = 'Oracle'
SpecificOptions.Strings = (
'Oracle.Direct=True'
'Oracle.Charset=ZHS16GBK'
'Oracle.UseUnicode=True')
Options.DisconnectedMode = True
Username = 'OK3PL'
Password = 'OK3PL'
Server = '192.168.1.139:1521:OKADB'
LoginPrompt = False
Left = 168
Top = 128
end

in fact, we must add :
'Oracle.Charset=ZHS16GBK'
'Oracle.UseUnicode=True'

we can get Oracle.Charset from the registry in the client computer.

daizhicun
Posts: 109
Joined: Thu 21 Jan 2010 11:49

Post by daizhicun » Thu 04 Feb 2010 04:43

how to get the oracle.charset,

I think the best way is :

SELECT Value FROM NLS_DATABASE_PARAMETERS WHERE PARAMETER='NLS_CHARACTERSET'

daizhicun
Posts: 109
Joined: Thu 21 Jan 2010 11:49

Post by daizhicun » Fri 05 Feb 2010 03:49

Now I find a new question.

when Set TUniConnection :'Oracle.UseUnicode=True'

I find that the Sql can not be parse accurately sometimes;

for example:

when i execute:

SELECT
MDL_ID,--1模块ID
MDL_CD--2模块I
FROM
T_SYS_MDL

the message is:ORA-01742: comment not terminated properly


But When i set "MDL_CD--2模块I " instead of "MDL_CD--2模块I"
(only add a blank space ) ,
It can be execute accurately!

so I can not user 'Oracle.UseUnicode=True'!

Plash
Devart Team
Posts: 2844
Joined: Wed 10 May 2006 07:09

Post by Plash » Mon 08 Feb 2010 10:13


daizhicun
Posts: 109
Joined: Thu 21 Jan 2010 11:49

Post by daizhicun » Tue 17 Aug 2010 07:23

now :
My environment is : delphi2010+UniDac3.00.0.10+win7+oracle11g

I find this bug shows again!

daizhicun
Posts: 109
Joined: Thu 21 Jan 2010 11:49

Post by daizhicun » Tue 17 Aug 2010 07:33

Image

daizhicun
Posts: 109
Joined: Thu 21 Jan 2010 11:49

Post by daizhicun » Tue 17 Aug 2010 07:46

I know this had be fixed at UniDac3.00.0.06

but now ,i find in UniDac3.00.0.09,UniDac3.00.0.10 ,this bug shows too .

if we set:Uniconn.SpecificOptions.Add('Oracle.UseUniCode=True');

it can shows chinese ok;

but if set 'Oracle.UseUniCode=False', it shows nvarchar2 chinese error;

i like use 'Oracle.UseUniCode=False'.

daizhicun
Posts: 109
Joined: Thu 21 Jan 2010 11:49

Post by daizhicun » Tue 17 Aug 2010 12:25

Image

daizhicun
Posts: 109
Joined: Thu 21 Jan 2010 11:49

Post by daizhicun » Tue 17 Aug 2010 12:25

Image

daizhicun
Posts: 109
Joined: Thu 21 Jan 2010 11:49

Post by daizhicun » Tue 17 Aug 2010 12:34

in fact ,Direct Mode or OCI mode;
they all has errors for varchar2,nvarchar2

Image


i love UniDAC very much!

i hope these bugs can be fixed soon;

daizhicun
Posts: 109
Joined: Thu 21 Jan 2010 11:49

Post by daizhicun » Tue 17 Aug 2010 13:03

I even used 3.00.0.7,it's OK .

But when i used 3.00.0.10,I found the errors above;

so I test 3.00.0.8,3.00.0.9,they all has the same errors;

I want to use 3.00.0.7,but i can't get it ,so i can't test it;

perhaps the update5 in Delphi2010 destroy the UniDAC;

Post Reply