求助,如何保存和显示jpg文件

用database ole blob 不能显示jpg文件,求好办法!
[34 byte] By [heshug-卖女孩的小火柴] at [2008-1-9]
# 1
可以用picture控件
先从数据库中用selectblob取出数据
再用setpicture写到picture控件
chenaimy-我行我素 at 2007-10-19 > top of Msdn China Tech,PowerBuilder,基础类...
# 2
database ole blob 可以显示jpg文件,
class define写word.picture.8
AFIC-AFoolInChina at 2007-10-19 > top of Msdn China Tech,PowerBuilder,基础类...
# 3
难过中,不知道是不是我保存文件错了,两种方法都不能

SQLCA.AutoCommit = True
ole_1.insertfile ( is_path+"\"+ls_filename)
lb_blob = ole_1.objectdata
UPDATEBLOB test
SET photo = :lb_blob
WHERE id = :id
USING SQLCA ;
SQLCA.AutoCommit = False

文件保存后,数据库里值是:0xD0CF11E0A1B11AE1000000000000000000000000000000003E000300FEFF0900060000000000000000000000010000000100000000000000001000000200000001000000FEFFFFFF0000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF

# 4
用picture方式显示的时候,提示:
---------------------------
JPEG Processing Error
---------------------------
Not a JPEG file: starts with 0xd0 0xcf
---------------------------
确定
---------------------------
# 5
保存时用FileRead()读入文件
//---------------------------------------------------------
//图片入库,处理大于32K的情况
//---------------------------------------------------------

integer i,li_cnt,li_rtn,li_filenum,loops
long flen, bytes_read
blob b, tot_b
string ls_id

SetPointer(HourGlass!)

flen = FileLength(p_1.PictureName)
If flen < 0 Then return

li_FileNum = FileOpen(p_1.PictureName,StreamMode!, Read!, LockRead!)

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

FOR i = 1 to loops
yield()
bytes_read = FileRead(li_FileNum, b)
tot_b = tot_b + b
NEXT
FileClose(li_FileNum)

ls_id = dw_1.GetItemString(dw_1.GetRow(),'id')
SQLCA.AutoCommit = True
UPDATEBLOB employee SET photo = :tot_b
WHERE id = :ls_id
USING SQLCA ;
IF SQLCA.SQLNRows > 0 THEN
COMMIT USING SQLCA ;
END IF
SQLCA.AutoCommit = False
显示时用SELECTBLOB取出,再p_1.SetPicture(b_jpg)

SQLCA.AutoCommit = True
SELECTBLOB photo
INTO :Emp_id_pic
FROM employee
WHERE employee.id = :ls_id
USING SQLCA ;
SQLCA.AutoCommit = False
If IsNull(Emp_id_pic) or len(Emp_id_pic) = 0 Then
p_1.SetPicture(Emp_pic)
messagebox('错误','没有照片!')
Return 1
Else
p_1.SetPicture(Emp_id_pic)
End If

zzxing at 2007-10-19 > top of Msdn China Tech,PowerBuilder,基础类...
# 6
你是用数据窗口显示吗
twtso1981-宝贝 at 2007-10-19 > top of Msdn China Tech,PowerBuilder,基础类...
# 7
是的,我的图片是批量导入,然后在数据窗口里显示
# 8
将图片放到ole再取出blob保存入数据库,然后用数据窗口里的database ole blob显示

因为用
SQLCA.AutoCommit = True
ole_1.insertfile ( is_path+"\"+ls_filename)
lb_blob = ole_1.objectdata
UPDATEBLOB test
SET photo = :lb_blob
WHERE id = :id
USING SQLCA ;
SQLCA.AutoCommit = False

会造成存和读的格式不统一
hygougou-uoguogyh at 2007-10-19 > top of Msdn China Tech,PowerBuilder,基础类...