oracle变量不支持32k以上大小
所以我们保存图片的时候,用的是另外的办法
如oci,ado的rs.addnew
delphi6我不会,所以只能说这么多

解决方案 »

  1.   

    版主说的不一定对,我在JAVA中也遇到了一样的情况,后来问了ORACLE公司,他们告诉我是我的BLOB用法错了。
    我是prepare了一句"insert into table values(1,?)"
    然后把Stream联系到?上,就insert了。
    这种用法只能用在long raw型字段上,你不妨改字段类型为long raw再试试
      

  2.   

    至于BLOB的用法可参看:
    http://expert.csdn.net/Expert/TopicView1.asp?id=1151465
      

  3.   

    oracle变量的确是不能超过32K限制的,在过程中就可以看出来.
    但是关于应用程序段用Stream我就不是太清楚
      

  4.   

    To: chooser(chooser)
       首先谢谢你!
       我改用long raw ,情况是一样的。
       另外我用:
         TBlobField(Table1.FieldByName('Jpg')).assign('e:\1.jpg');
       却不会出现错误提示,但图片却取不出(11.jpg 字节为零):
       TBlobField(Table1.FieldByName('Jpg')).SaveToFile('e:\11.jpg');http://expert.csdn.net/Expert/TopicView1.asp?id=1151465我打不开呀!
      

  5.   

    TO:sun9989(一品黄山)
      你是斑竹,快帮我吧,以前的为何打不开!
    (你是安徽的吧)
      

  6.   

    你是用C/S模式吧,这样的问题我也遇到过!你可以在BDE中设置图片的SIZE,只要加大就可以存大的图片了。如果解决了,那给分噢!!哈哈~~~
      

  7.   

    TO: fzzlz(fzzlz)
      老兄,在BDE中设置图片SIZE的方法,俺早就试过了。不行!,你能说一下你整个过程具体的是如何做的吗,解决了我可给你再加高分(再加500)!
      

  8.   

    写一个循环,每次判断一下:
                      li_n=1
    if len(b_temp)<32765 then
    filewrite(ll_filenum,b_temp)
    else
    DO 
    lb_mid=blobmid (b_temp,li_n,32765)
    li_n=li_n+32765
    filewrite(ll_filenum,lb_mid)
    LOOP until len(lb_mid)=0
    end if
      

  9.   

    To: dunk77
    我在d6中,如何才能作到循环?? 你这好象是写成Procedure了吧?
      

  10.   

    我用PB,一般存储图片是把大图片用文件流的方法,一段一段地读出来,放到PB的变量中,然后存储的数据库中。
    在delphi中的用法我就不太清楚,
      

  11.   

    我用存储过程曾经把7MB的PDF保存到数据库中,用google搜索,保证能找到满意的答案。
    多用google,因为你遇到的问题,不一定有人能解决,也许人家解决了写出来一大堆比较麻烦。