hur.cn - 华软网

 热门搜索

为什么我保存图片数据一多了就出错?

  作者:未知    来源:网络    更新时间:2018/3/3
我用的环境是win2000+oracle8i+pb8.0,用一张表picture(picture_id varchar2(),picture blob)
来存放图片信息,当图片数据少于一定数量(如200张)时,图片的存取一切正常,但当数据多于该范围后,新的图片便保存不了,请问是和问题?是否数据库接口一定要用odbc,还是我的orcle数据库表空间不足导致?
------华软网友回答------
代码贴出来看看?
数据表应该不会有限制,除非硬盘没有足够空间,查看一下sqlca.sqlerrtext的错误信息是什么.
------华软网友回复------
使用oracle8i需要用PB的专用接口么。把问题贴出来,是系统错误还是没有报错就是干存不了呢?
------华软网友回复------
string ls_pathname, ls_filename
integer li_value,li_FileNum,loops,i
long ll_fileLength,bytes_read,new_pos,ll_num
blob b, tot_b

li_value = GetFileOpenName("选择图片", &
+ ls_pathname, ls_filename, 'jpg',&
  +'位图文件(*.bmp),*.bmp,Jpg 文件(*.jpg),*.jpg,所有文件(*.*),*.*')

IF li_value = 1 THEN
   SetPointer(HourGlass!)
   ll_fileLength= FileLength(ls_filename) 
   li_FileNum = FileOpen(ls_filename, &
    StreamMode!, Read!, LockRead!)
    
   IF ll_filelength > 32765 THEN
      IF Mod(ll_filelength, 32765) = 0 THEN
   loops =ll_filelength/32765
      ELSE
   loops = (ll_filelength/32765) + 1
      END IF
   ELSE
    loops = 1
   END IF
  
   new_pos = 1
   FOR i = 1 to loops
    bytes_read = FileRead(li_FileNum, b)
   tot_b = tot_b + b
   NEXT
   FileClose(li_FileNum)
 
Elseif li_value=-1 then
MessageBox("选择图片","打开文件错误!")
End If

tab_1.tabpage_2.p_1.setpicture(ib_image)

ib_image=tot_b

string  ls_bill

ls_bill=tab_1.tabpage_1.dw_1.object.brand_id[1]

SQLCA.AutoCommit = True

UPDATEBLOB brand_picture_blob
SET picture = :tot_b
WHERE brand_id = :ls_bill 
USING sqlca ;

IF SQLCA.SQLNRows > 0 THEN
   COMMIT USING SQLCA;
MessageBox('提示信息','此图片已成功存入数据库!')
else
rollback;
MessageBox('提示信息','图片保存失败!')
END IF

SQLCA.AutoCommit = false

这是客户端的代码,数据是保存在服务器上的。每次把数据清空后,前100多条记录都是正常的,但到了一定数量以后就不行了。
------华软网友回复------
保存图片的时候最好控制图片的大小,比如>128K就不让它找开,重新选择
------华软网友回复------
是不是出现个Window自动弹出的对话框JPG什么什么来着
------华软网友回复------
请贴出错误信息!

IF SQLCA.SQLNRows > 0 THEN
   COMMIT USING SQLCA;
MessageBox('提示信息','此图片已成功存入数据库!')
else
         MessageBox('错误信息',sqlca.sqlerrtext) //加上这句测试一下
rollback;
MessageBox('提示信息','图片保存失败!')
END IF

------华软网友回复------
为什么不考虑存图片路径,把图片最好不要存到数据库中,那样数据库很大
------华软网友回复------
图片路径的可行性;
在客户端操作 你要操作图片放在客户端 你放哪个路径
在查看的时候 你在操作的机子上可以找到没错,在其他的客户端 服务器端呢?
采录相对路径可以吗 也不行 
最好自己做个加压解压的用户对象 保存的时候 加压 查看的时候解压 少占空间 也不是很费时
------华软网友回复------
可能是表空间扩展的问题 你可以把Sqlca.SQLErrText报出来
------华软网友回复------
在修改图片时系统提示:ORA-01691:Lob段GSMIS.SYS_LOB0000025859C00006$$无法通过5394(在表空间GSMIS中)扩展,请问哪位遇到此类问题?该如何解决?      
华软声明:本内容来自网络,如有侵犯您版权请来信指出,本站立即删除。