L
lsh78
Unregistered / Unconfirmed
GUEST, unregistred user!
我使用delphi5+ado+oracle8
往oracle8中的long raw字段字数据,兆级的都没问题,源代码如下:
var FileStream1:TFileStream;
Stream1:TStream;
aaa:integer;
begin
FileStream1:=nil;
Stream1:=nil;
FileStream1:=TFileStream.Create(trim(edit2.text),fmOpenRead);
FileStream1.Position:=0;
ADOTable1.Insert;
ADOTable1.FieldByName('filename').asstring:=trim(edit1.text);
ADOTable1.FieldByName('filetype').asstring:=trim(combobox1.text);
Stream1:=ADOTable1.CreateBlobStream(ADOTable1.FieldByName('filetxt'), bmReadWrite);
Stream1.CopyFrom(FileStream1,FileStream1.Size);
Stream1.Free;
ADOTable1.Post;
FileStream1.Free;
end;
但是从ORACLE8的LONG RAW字段中取数据还原成文件时就受到64K限制,而且长度为(总长度-64K*N)
,(N为一整数,相当于倍数)与数据溢出的效果类似,代码如下:
begin
TBlobField(adotable1.fieldByName('filetxt')).savetofile('c:/qqqq.doc');
end;
程序运行时没有报错,但只能在64K下,文件还原才能正常,请各位指点!!!
附:我也不敢保证写进LONG RAW字段时全部写进,我单步跟踪时,流的大小超过64K时,程序执
行也正常,所以我才判断写的操作可能没有问题.
往oracle8中的long raw字段字数据,兆级的都没问题,源代码如下:
var FileStream1:TFileStream;
Stream1:TStream;
aaa:integer;
begin
FileStream1:=nil;
Stream1:=nil;
FileStream1:=TFileStream.Create(trim(edit2.text),fmOpenRead);
FileStream1.Position:=0;
ADOTable1.Insert;
ADOTable1.FieldByName('filename').asstring:=trim(edit1.text);
ADOTable1.FieldByName('filetype').asstring:=trim(combobox1.text);
Stream1:=ADOTable1.CreateBlobStream(ADOTable1.FieldByName('filetxt'), bmReadWrite);
Stream1.CopyFrom(FileStream1,FileStream1.Size);
Stream1.Free;
ADOTable1.Post;
FileStream1.Free;
end;
但是从ORACLE8的LONG RAW字段中取数据还原成文件时就受到64K限制,而且长度为(总长度-64K*N)
,(N为一整数,相当于倍数)与数据溢出的效果类似,代码如下:
begin
TBlobField(adotable1.fieldByName('filetxt')).savetofile('c:/qqqq.doc');
end;
程序运行时没有报错,但只能在64K下,文件还原才能正常,请各位指点!!!
附:我也不敢保证写进LONG RAW字段时全部写进,我单步跟踪时,流的大小超过64K时,程序执
行也正常,所以我才判断写的操作可能没有问题.