hur.cn - 华软网

 热门搜索

另立专贴:to dalianyilan(嘘嘘兔):

  作者:未知    来源:网络    更新时间:2018/6/13
to dalianyilan(嘘嘘兔):
不好意思,我没说清楚,让你误会了我的意思,在这另立专贴向大家请教,拿你这段代码来说吧:

Blob lb_pic,lb_write
Long ll_length
Int li_c,li_i,li_fileNum,li_qs,li_len,li_mod
string ls_filename,ll_no


selectblob picture
into :lb_pic      //问题在这数据库里该记录这个字段有62300字节,读出来最多只有32766字节
from t_health
where no= :select_no;

ll_length = Len(lb_pic)   ///用调试器查年这里的长度为32767字节
IF ll_length<1 THEN RETURN

li_c = ll_length/32765
li_mod = Mod(ll_length,32765)
IF li_mod>0 THEN li_c++

ls_filename = "ggg.jpg"//生成文件
li_FileNum = FileOpen(ls_filename,StreamMode!,write!,lockWrite!,replace!)
FOR li_i=1 to li_c
li_qs = (li_i - 1) * 32765 + 1
IF li_i<li_c THEN
li_len = 32765
ELSE
li_len = li_mod
END IF
lb_write = blobmid(lb_pic,li_qs,li_len)
FileWrite(li_fileNum,lb_write)
NEXT
fileclose(li_filenum)

dw_1.modify("p_1.filename='ggg.jpg'")//指定p_1的filename


问题:用selectblob查询blob字段数据时,当该blob数据长度大于32767时,查询出来的总为32767,多余的被截断了
------华软网友回答------
楼主你查询下fileseek()的帮助!
------华软网友回复------
谢谢楼上的热心回贴,但这是从数据库里读的呀,不是从文件里呀,fileseek用不上呀
------华软网友回复------
是不是跟PB本身和数据库有关系
我是用的PB8.04
用selectblob取10M的文件也能读出来呀


------华软网友回复------
你的BLOB用什么方式保存的,是不是OLE?
以下是我保存BLOB的代码,它和上面取出blob是对应的:
                  long ll_filelen
int li_filenum,li_loops,li_counter
blob lb_read,lb_picture
string ls_photofile='aaa.jpg',ls_no//把aaa.jpg文件保存到数据库中
ls_no=dw_1.getitemstring(dw_1.getrow(),'no')//得到编号
ll_filelen=filelength(ls_photofile)
li_filenum=fileopen(ls_photofile,streammode!,read!,lockread!)
if ll_filelen > 32765 then
li_loops=((ll_filelen - 1)/32675)+1
else
li_loops=1
end if

for li_counter=1 to li_loops
fileread(li_filenum,lb_read)
lb_picture=lb_picture+lb_read
next
fileclose(li_filenum)
//p_1.setpicture(lb_picture)

sqlca.autocommit=true
updateblob t_health
set picture=:lb_picture
where no = :ls_no;//保存BLOB
if sqlca.sqlnrows>0 then
commit;
                   else
                   ......
                   end if
------华软网友回复------
ing
------华软网友回复------

 to aflyingpig(毛毛):
  我用PB8.0,9.0试了都没有的
 to  dalianyilan(嘘嘘兔)
  OLE方式我也用了也不行
  读文件方式我的和你的方式一样的
  

     
华软声明:本内容来自网络,如有侵犯您版权请来信指出,本站立即删除。