在oracle里用long row存图片 以vb为例子: Public Function MyFc_PicSave() '**********************向数据库中存储图片 Dim rs As New ADODB.Recordset Dim rs As New ADODB.Recordset Dim Rss As New ADODB.Stream rs.Open "SELECT * FROM TABLE1", GB_Cn, adOpenStatic, adLockOptimistic Rss.Type = adTypeBinary Rss.Open Rss.LoadFromFile "D:\fff\groupH.ico" rs.AddNew rs.Fields("a") = "PICTURE" rs.Fields("B") = Rss.Read 'LoadPicture("D:\fff\groupH.ico") rs.Update End FunctionPublic Function MyFc_PicLoad() '**********************从数据库中读取图片 Dim My_PicLoadRs As New ADODB.Recordset My_PicLoadRs.Open "SELECT * FROM TABLE1", GB_Cn, adOpenStatic, adLockOptimistic Rss.Open If Not rs.EOF Then Set Picture1.DataSource = My_PicLoadRs Picture1.DataField = My_PicLoadRs!B.Name End If rs.Close End Function
选择图片以及存储图片: string ls_path,ls_name long ret,loops,ll_filenum,flen,ll_readfile blob lb_pic,b int i,li_id li_id=integer(trim(sle_1.text)) ret=getfileopenname("选择图片",ls_path,ls_name,"aaaa","图片文件(bmp),*.bmp,图片文件(jpg),*.jpg,图片文件(jpeg),*.jpeg") if ret <> 1 then return flen=filelength(ls_path) messagebox("",flen) p_1.picturename=ls_path ll_filenum=fileopen(ls_path,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 lb_pic=blob("") for i =1 to loops ll_readfile=fileread(ll_filenum,b) lb_pic=lb_pic + b next fileclose(ll_filenum) ole_1.insertfile(ls_name) updateblob t_picc set pic= :lb_pic where id=:li_id; commit;从数据库中取图片: blob lb_pic messagebox("",integer(sle_1.text)) int li_id li_id=integer(sle_1.text) selectblob pic into :lb_pic from t_picc where id=:li_id; if sqlca.sqlcode <> - 1 then if len(lb_pic)> 0 then p_1.setpicture(lb_pic) end if else messagebox("","") p_1.picturename="" end if 这样就可以了! 在我的机上完全能够运行!
以vb为例子:
Public Function MyFc_PicSave()
'**********************向数据库中存储图片
Dim rs As New ADODB.Recordset
Dim rs As New ADODB.Recordset
Dim Rss As New ADODB.Stream
rs.Open "SELECT * FROM TABLE1", GB_Cn, adOpenStatic, adLockOptimistic
Rss.Type = adTypeBinary
Rss.Open
Rss.LoadFromFile "D:\fff\groupH.ico"
rs.AddNew
rs.Fields("a") = "PICTURE"
rs.Fields("B") = Rss.Read 'LoadPicture("D:\fff\groupH.ico")
rs.Update
End FunctionPublic Function MyFc_PicLoad()
'**********************从数据库中读取图片
Dim My_PicLoadRs As New ADODB.Recordset
My_PicLoadRs.Open "SELECT * FROM TABLE1", GB_Cn, adOpenStatic, adLockOptimistic
Rss.Open
If Not rs.EOF Then
Set Picture1.DataSource = My_PicLoadRs
Picture1.DataField = My_PicLoadRs!B.Name
End If
rs.Close
End Function
string ls_path,ls_name
long ret,loops,ll_filenum,flen,ll_readfile
blob lb_pic,b
int i,li_id
li_id=integer(trim(sle_1.text))
ret=getfileopenname("选择图片",ls_path,ls_name,"aaaa","图片文件(bmp),*.bmp,图片文件(jpg),*.jpg,图片文件(jpeg),*.jpeg")
if ret <> 1 then return
flen=filelength(ls_path)
messagebox("",flen)
p_1.picturename=ls_path
ll_filenum=fileopen(ls_path,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
lb_pic=blob("")
for i =1 to loops
ll_readfile=fileread(ll_filenum,b)
lb_pic=lb_pic + b
next
fileclose(ll_filenum)
ole_1.insertfile(ls_name)
updateblob t_picc set pic= :lb_pic where id=:li_id;
commit;从数据库中取图片:
blob lb_pic
messagebox("",integer(sle_1.text))
int li_id
li_id=integer(sle_1.text)
selectblob pic into :lb_pic from t_picc where id=:li_id;
if sqlca.sqlcode <> - 1 then
if len(lb_pic)> 0 then
p_1.setpicture(lb_pic)
end if
else
messagebox("","")
p_1.picturename=""
end if
这样就可以了!
在我的机上完全能够运行!