odac控件,往数据库中写入blob字段时,文件大小超过5,6k的好像就报错,不知道什么原因,是不是有什么属性需要设置 ( 积分: 300 )

  • 主题发起人 主题发起人 耗子_super
  • 开始时间 开始时间

耗子_super

Unregistered / Unconfirmed
GUEST, unregistred user!
OraQuery1.Close;
OraQuery1.SQL.Text := 'insert into t_jxm_sbs_kjzc_file(djxh,docname,filedoc,sn) values('+
':djxh,:docname,:filedoc,:sn)';
OraQuery1.ParamByName('djxh').AsString := '20070080';
OraQuery1.ParamByName('docname').AsString := '111.jpg';
OraQuery1.ParamByName('sn').AsInteger := 45;
OraQuery1.ParamByName('filedoc').LoadFromFile('c:/111.txt', ftBlob);
try
OraQuery1.ExecSQL;
except

end;
 
用ADO就可以解决。
 
晕,大伙帮忙啊
 
OraQuery就不能这样用
写完SQL后生成其它的如UPDATE,DELPTE,REFRESH,INSERT等,这样写不行的
不过更新最好用 smartquery,那个好用
 
换成smartquery也是一样的啊,文件大于5k就报错了:unimplemented or unreasonable conversion requested
 
我是这样用的tblob(fieldbyname('XXX')).loadfromfile(filename);
你那个可能是类型转换出错了,我这样做存储,取出WORD文件都没有问题
 
boy2002cn 是对的,我也是这样用的,几十M的文件都没有问题。
 
首先用法是没有错的,偶就是这样用的。你可以把错误贴出来,或者直接跟进控件看看。
 
你们的orasession是net方式吗?我的是
 
报错是:net error 0
 
先插入empty_blob()
然后select rowid,t.* from t返回可改的数据集
tblob(fieldbyname('XXX')).loadfromfile(filename);
post提交
 
按照沉香屑的方法,代码如下:

Query.SQL.Text := 'insert into t_jxm_sbs_kjzc_file(djxh,docname,filedoc,sn) values('+
':djxh,:docname,empty_blob(),:sn)';
Query.ParamByName('djxh').AsString := '20070080';
Query.ParamByName('docname').AsString := '111.jpg';
Query.ParamByName('sn').AsInteger := 45;
Query.ExecSQL;

Query.Close;
Query.SQL.Text := 'select rowid,t.* from t_jxm_sbs_kjzc_file t where t.djxh=''' +
'20070080' + ''' and sn=' + '45';
Query.ExecSQL;
if not Query.IsEmpty then
begin
Query.Edit;
TBlobField(Query.FieldByName('filedoc')).LoadFromFile('c:/111.txt');
Query.Post;
end;

Query.Edit 的时候报错:Not found field corresponding parameter ID
 
BDE连接里有个属性需要设置,好像叫BLOBSize的,你改大一些
 
晕,bde都出来了,我是odac直连oracle,net方式。
 
先把文件读到一个文件流中试试,可能不是数据库的原因。
 
http://delphibbs.com/keylife/iblog_show.asp?xid=29408 看看这个例子,没有一点问题,要先生成scott下的test表,SQL在压缩包里
 
后退
顶部