如何存取图片

xiaofei104 2002-02-28 08:14:44
在PB中我用一段程序来实现图片的存取时,图片却存不进去。
脚本如下:
int fh
blob emp
fh=FileOpen("g:\test\net.bmp",StreamMode!)
if fh<>-1 then
FileRead(fh,emp)
FileClose(fh)
updateblob users set photo=:emp where name="xiaofei" using sqlca;
end if
if sqlca.sqlnrows>0 then
commit using sqlca;
end if
当我再去查询数据库时发现根本没有把图片存进去。对了我使用的数据库是SQL
SERVER 表users中 photo字段使用的是image数据类型
...全文
5 点赞 收藏 5
写回复
5 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
redhandgirl 2002-03-03
integer li_FileNum, loops, i
long flen, bytes_read, new_pos
blob b
string bmpname, named,tempbmp
integer ll_o,ll_bytes
string ll_name,ll_id
integer value


value= GetFileOpenName("请选择你要录入图文件" , &
bmpname , named , "",&
"图像文件(*.bmp;*.jpg;*.gif) , *.bmp;*.jpg;*.gif,"+&
"autocad 文件 (*.dwg;*.dxf),*.dwg;*.dxf," +&
"所有文件(*.*),*.*")

SetPointer(HourGlass!)
flen = FileLength(bmpname)
li_FileNum = FileOpen(bmpname,StreamMode!)
IF flen > 32765 THEN
IF Mod(flen, 32765) = 0 THEN
loops = flen/32765
ELSE
loops = (flen/32765) + 1
END IF
ELSE
loops = 1
END IF
// Read the file
new_pos = 1

string ls_temp = ''
pic_b = blob(ls_temp)//set pic_b to null

//messagebox("",len(pic_b))
FOR i = 1 to loops
bytes_read = FileRead(li_FileNum, b)

pic_b = pic_b + b
NEXT
FileClose(li_FileNum)

insert into pic_wh(part_no)
values(:ls_part_no);
IF NOT IsNull(pic_b) THEN
SQLCA.AutoCommit=TRUE UPDATEBLOB pic_wh SET part_pic=:pic_b
WHERE part_no= :ls_part_no USING SQLCA;
SQLCA.AutoCommit=FALSE
END IF
回复
zjcxx 2002-02-28
总结一下:
1)在updateblob users set photo=:emp where name="xiaofei" using sqlca;
之前加上sqlca.autocommit=true,之后加上sqlca.autocommit=false
2)读取文件应判断是否超过23765,不然要循环读入。每次最大只能读取32K
呵呵!
回复
china_hfz 2002-02-28
图片大小不能超过32756 不然要分几次读入
回复
llitcwl 2002-02-28
要加一句:sqlca.autocommit=true
回复
tiantianpb 2002-02-28
改成blob数据类型试试
回复
发帖
非技术版
创建于2007-09-28

379

社区成员

PowerBuilder 非技术版
申请成为版主
帖子事件
创建了帖子
2002-02-28 08:14
社区公告
暂无公告