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

Ilovekelly 2005-09-05 06:08:17
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,多余的被截断了
...全文
81 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
saiche05 2005-09-08
  • 打赏
  • 举报
回复
ing
嘘嘘兔 2005-09-08
  • 打赏
  • 举报
回复
你的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
Ilovekelly 2005-09-08
  • 打赏
  • 举报
回复

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


DST_good 2005-09-07
  • 打赏
  • 举报
回复
是不是跟PB本身和数据库有关系
我是用的PB8.04
用selectblob取10M的文件也能读出来呀

Ilovekelly 2005-09-06
  • 打赏
  • 举报
回复
谢谢楼上的热心回贴,但这是从数据库里读的呀,不是从文件里呀,fileseek用不上呀
perneer 2005-09-06
  • 打赏
  • 举报
回复
楼主你查询下fileseek()的帮助!

740

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder 脚本语言
社区管理员
  • 脚本语言社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧