hur.cn - 华软网

 热门搜索

关于图片保存、取出的问题,在线等~~~~

  作者:未知    来源:网络    更新时间:2018/12/6
在窗口上一个picture控件,通过这个控件,我已经将图片保存到数据库中,然则在取数的时候出现这样的毛病:not a jpeg file:starts with 03x3f 0x00,这个是为什么呢?
------华软网友回答------
up
------华软网友回复------
先说说你怎么存的。
------华软网友回复------
一看问题就不专业.代码.
------华软网友回复------
欠好意思,存的代码(我是写成一个函数的形式,参数为:a_pic):
value = GetFileOpenName("请选择画笔图片", ls_path, ls_file, "JPG", &
+ "JPG Files (*.JPG),*.JPG," &
+ "BMP Files (*.BMP),*.BMP," &
+ "WMF Files (*.WMF),*.WMF")
IF value = 1 THEN 
a_pic.PictureName = ls_path
SetPointer(HourGlass!)
ll_flen = FileLength(ls_path)
li_file = FileOpen(ls_path , StreamMode!, Read!, LockRead!)
IF ll_flen > 32765 THEN
IF Mod(ll_flen,32765)=0 THEN 
loops = ll_flen/32765
ELSE
loops = (ll_flen/32765) + 1
END IF
ELSE
loops = 1
END IF
FOR i = 1 to loops
bytes_read = FileRead(li_file,lb_small)
lblb_buspic = lblb_buspic + lb_small
NEXT
FileClose(li_file)
a_pic.SetPicture(lblb_buspic)
IF SQLCA.SQLNRows > 0 THEN
COMMIT ;
END IF
END IF 

取的代码
SELECTBLOB p_pic INTO :lblb_pic  FROM project WHERE p_id = :ls_pid;
IF NOT Isnull(lblb_pic) THEN 
     tab_1.tabpage_1.p_1.SetPicture(lblb_pic)
ELSE 
      tab_1.tabpage_1.p_1.picturename = ''
END IF
------华软网友回复------
怎么没人了,^_^
------华软网友回复------
那还用说,你基本就没存阿……
a_pic.SetPicture(lblb_buspic)
并没有保存到数据库,你至少需要
updateblob一下吧
------华软网友回复------
看lblb_pic  定义的类型,是blob类型吗?
------华软网友回复------
欠好意思,漏了一条,我已经写了
UPDATEBLOB project SET p_pic = :lblb_pic WHERE p_id = :ls_pid;
------华软网友回复------
lblb_pic  是BLOB类型
------华软网友回复------
没人知道原因吗?再贴完整代码:

取::::::
string ls_pid
blob lblb_pic

ls_pid = dw_1.GetItemString(dw_1.GetRow(),'p_id')
IF ib_new = true or ib_edit = true THEN
lblb_pic = gf_com_pic_gain_from_db1(tab_1.tabpage_1.p_1)
UPDATEBLOB project SET p_pic = :lblb_pic WHERE p_id = :ls_pid;
ELSE
Return
END IF

存!!!!!!!
value = GetFileOpenName("请选择画笔图片", ls_path, ls_file, "JPG", &
+ "JPG Files (*.JPG),*.JPG," &
+ "BMP Files (*.BMP),*.BMP," &
+ "WMF Files (*.WMF),*.WMF")
IF value = 1 THEN 
a_pic.PictureName = ls_path
SetPointer(HourGlass!)
ll_flen = FileLength(ls_path)
li_file = FileOpen(ls_path , StreamMode!, Read!, LockRead!)
IF ll_flen > 32765 THEN
IF Mod(ll_flen,32765)=0 THEN 
loops = ll_flen/32765
ELSE
loops = (ll_flen/32765) + 1
END IF
ELSE
loops = 1
END IF
FOR i = 1 to loops
bytes_read = FileRead(li_file,lb_small)
lblb_buspic = lblb_buspic + lb_small
NEXT
FileClose(li_file)
a_pic.SetPicture(lblb_buspic)
IF SQLCA.SQLNRows > 0 THEN
COMMIT ;
END IF
END IF 
UPDATEBLOB project SET p_pic = :lblb_pic WHERE p_id = :ls_pid;

------华软网友回复------
UPDATEBLOB 完了,你应该判断一下sqlcode之类的吧?
------华软网友回复------
已经写了,我只是在这里稍微简洁了一下
------华软网友回复------
sqlca.autocommit=true
UPDATEBLOB project SET p_pic = :lblb_pic WHERE p_id = :ls_pid;
sqlca.autocommit=false
------华软网友回复------
照旧不行,我预计问题不出现在保存,应该在取,而且是否是于PB设置有关呢?      
华软声明:本内容来自网络,如有侵犯您版权请来信指出,本站立即删除。