DbExpress+Oracle在使用过程中的问题?请各位大侠们帮着看看,是Oracle FOR DbExpress的BUG吗?(200分)

  • 主题发起人 主题发起人 herohui88
  • 开始时间 开始时间
H

herohui88

Unregistered / Unconfirmed
GUEST, unregistred user!
本人开发平台为ORACLE9i+Delphi6 CLX架构,
在使用DbExpress跟Oracle连接使用时出现如下问题:
操作表名为 "Test",
字段:
"Field1" VARCHAR(10);
"Field2" VARCHAR(10);
"Field3" CLOB;
我的建表语句为 Create Table "Test" ("Field1" Varchar(10),"Field2" Varchar(10),"Field3" CLOB)
在表名及字段名加 " 是为了能够同时在不同数据库(如InterBase,Oracle)中使用。

通过SQLClientDataset连接后打开后,在DBGRID中修改Field1,Field2的值,再ApplyUpdate(0),则无错误。
如果在DBMemo中修改了Field3的值,则在ApplyUpdate(0)出现错误,指出字段不存在。
通过SQLMonitor查得如下结论:
更改Field1,Field2时,DbExpress向服务器送出如下命令
update "Test" set "Field1" = :1, "Field2" = :2 where "Field1" = :3 and "Field2" = :4
因为各个字段都有"号,所以未出错。
update "Test" set "Field3" = EMPTY_CLOB() where "Field1" = :1 and "Field2" = :2 RETURNING Field3 INTO :3
因为最后一个Field3的"号已被去掉,所以引发了找不到字段的错误。
请问这是DbExpress的Bug吗?有什么办法解决?
 
为什么没人回答呀,我顶一下!
 
再顶一下
 
我也不太懂,
我感觉一些一般的数据类型可以用ApplyUpdate(0)来更新,可是比较特殊的数据类型可能不能用这种方法吧。
具体的,要先建一个内存变量,把外界数据赋予内存变量,再将内存变量赋予数据里。你再用ApplyUpdate(0)来更新试试吧
 
我也碰到了这个问题,应该是expora.dll(具体名字可能不是这样)的问题
 
应该是DbExpress的Bug, 没办法解决
还是从自身入手吧,把所用的表名、字段名都换成大写就可以了。
因为在Oracle中, create table "Test" 与 create table "TEST"、create table test
创建出来的表名是不同的,在""内的都是大小写敏感,而不加引号的都当作大小,故后两
者创建的表名是一样的。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
1K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部