Delphi与Oracle的问题,为什么DELPHI说BLOB为无效的字符类型????(200分)

  • 主题发起人 主题发起人 yw
  • 开始时间 开始时间
Y

yw

Unregistered / Unconfirmed
GUEST, unregistred user!
各位大侠:
怎么回事啊,DELPHI在调用ORACLE数据库中的TABLE时,因该TABLE中含有BLOB类型的字段,
竟然报错说:“无效的字符类型”!
我用的是DELPHI5.5和ORACLE8.05,我快急死了,请大家拉兄弟一把!!!
感激不尽!!
 
建议你将图片的路径保存在数据库中,调用时利用路径访问!
 
TABLE中有多字段为BLOB,含大文字量和图片!
 
Delphi中的TABLE的类型里的长2进制有些特殊。

对于你这个情况,我建议你使用 流 来处理BLOB字段中的数据。
 
如果,在一个TABLE中有多个BLOB字段,是否可以?
 
我也遇到了相同的问题,也急死了。如果遇到解决办法,务必告知!!!!!!!!
 
to 星月:
现在的问题不是说用不用流来处理。而是:
table中含有blob字段。我要处理任何字段,都首先要table.open呀是不是?
问题就是,刚刚运行到table.open,后面的流处理还没运行到就出错了:
“数据类型不支持!”
我该怎么办?
yw,如果解决了请一定告诉我,我的e: hanhan@mail.slof.com
 
我用DBEXPRESS没遇到这问题,似乎在三层中也没有这问题
 
建议使用Oracle的专用连接引擎,Oracle Data Acess,
http://www.delphi32.com/vcl/1448/download,did,3125,iid,1448.asp
 
升级到
BDE5.11
修改
改大
BLOBS TO CACHE=2048
BLOB SIZE=1024
用流存储

var

FS: TFileStream;
begin
if not (table1.State in [dsInsert, dsEdit]) then table1.Insert;
try
FS := TFileStream.Create('c:/Windows/Winlogo.bmp', fmOpenRead);
TBlobField(table1.FieldByName('字段名')).LoadFromStream(FS);
finally
FS.Free;
end;
table1.Post;

end;
 
TO YUBO:
我用的是ADO,而且用BDE也不行。
你提供的代码是table1.open之后的内容。
我的问题是运行到table1.open时就出错,难道在你上面的代码之前没有table1.open的语句么?
请马上回答,我急啊!
 
当然得Open了。

你升级BDE到5.11
然后修改
BLOBS TO CACHE=
BLOB SIZE=
两个参数,把它的值改大试试
试一下TQuery看看行不行。
在SQL explorer 写SQL 语句看看报不报错!
 
var
MS:TMemoryStream;
begin
MS:=TMemoryStream.Create;
MS.LoadFromFile('image.bmp');
Query1.append;
(Query1.FieldByName('BMP') As TBlobField).LoadFromStream(ms);
Query1.Post;
end;
 
这个问题我已经自行解决了。
BDE本来就没问题。
我的问题出在用ADO连接上,用微软的ADO for ORACLE不行
原因是ADO不支持BLOB。
去ORACLE网站下载oracle provider for OLE DB安装就行了。
 
yw,去oracle站点下载安装:http://download.oracle.com/otn/other/ole-oo4o/OraOLEDB_81720.exe
然后ADOConnection的connectionstring建立时选ORACLE provider for OLE DB,问题就100%解决!!!!
 

Similar threads

S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
915
SUNSTONE的Delphi笔记
S
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部