Page 1 of 4
I find a error for oracle in Direct Mode about nvarchar2
Posted: Thu 04 Feb 2010 02:56
by daizhicun
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.

Posted: Thu 04 Feb 2010 03:10
by daizhicun
i test it at TOAD for oracle, KEEP TOOL for oracle .
thay all has direct mode.
but they show nvarchar2 fields is OK.
Posted: Thu 04 Feb 2010 03:20
by daizhicun
My environment is : delphi2010+UniDac3.00.0.5
Posted: Thu 04 Feb 2010 04:15
by daizhicun
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.
Posted: Thu 04 Feb 2010 04:15
by daizhicun
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.
Posted: Thu 04 Feb 2010 04:43
by daizhicun
how to get the oracle.charset,
I think the best way is :
SELECT Value FROM NLS_DATABASE_PARAMETERS WHERE PARAMETER='NLS_CHARACTERSET'
Posted: Fri 05 Feb 2010 03:49
by daizhicun
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'!
Posted: Mon 08 Feb 2010 10:13
by Plash
Posted: Tue 17 Aug 2010 07:23
by daizhicun
now :
My environment is : delphi2010+UniDac3.00.0.10+win7+oracle11g
I find this bug shows again!
Posted: Tue 17 Aug 2010 07:33
by daizhicun
Posted: Tue 17 Aug 2010 07:46
by daizhicun
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'.
Posted: Tue 17 Aug 2010 12:25
by daizhicun
Posted: Tue 17 Aug 2010 12:25
by daizhicun
Posted: Tue 17 Aug 2010 12:34
by daizhicun
in fact ,Direct Mode or OCI mode;
they all has errors for varchar2,nvarchar2
i love UniDAC very much!
i hope these bugs can be fixed soon;
Posted: Tue 17 Aug 2010 13:03
by daizhicun
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;