CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Oracle >  基础和管理

求教:oracle中图像数据的添加与读取

楼主aaron_jg()2004-12-03 21:29:10 在 Oracle / 基础和管理 提问

各位神仙:  
    请问oracle中图像数据的存储与输出怎么实现啊?  
    听说使用blob   ,能不能具体讲述一下,一定有很多人期待你的热心答复:) 问题点数:0、回复次数:5Top

1 楼linysh(我爱小朋友)回复于 2004-12-03 21:48:46 得分 0

具体可以参考oracle的文档,有关OO4O方面的文章。  
  一个例子:  
  存储:  
  create   table   t   (  
  id   number(10),  
  tmp_file   blob,  
  primary   key(id));  
  /***     ASP   程序   *****/  
   
  formData   =   Request.BinaryRead(Request.TotalBytes())  
  sSelectSQL   =   "SELECT   id,tmp_file     FROM   t   WHERE   id   =   "   &   id  
  sInsertSQL   =   "insert   into     t(id,tmp_file)"   &   _  
  "   values("&id&",EMPTY_BLOB())"  
   
  Set   OO4OSession   =   CreateObject("OracleInProcServer.XOraSession")  
  Set   OraDatabase   =   OO4OSession.OpenDatabase(sDataBase,   sUserPsw,   0)  
   
  OraDatabase.begintrans  
  'OraDatabase.AutoCommit   =   true  
  OraDatabase.ExecuteSQL   (   sInsertSQL   )  
  set   OraDynaset=OraDatabase.CreateDynaset(sSelectSQL,ORADYN_DEFAULT )  
  OraDynaset.Edit  
  OraDynaset.Fields(sFieldImage).AppendChunk     sFormData    
  OraDynaset.Update  
  OraDatabase.committrans  
   
  Top

2 楼linysh(我爱小朋友)回复于 2004-12-03 21:53:32 得分 0

续上:  
  sDataBase   =   数据库实例名,   sUserPsw   =   相关的用户名/密码   .  
   
  输出文件:/*   假设原来保存的是Word文档   */  
   
  BytesRead   =   0    
  'Reading   in   32K   chunks    
  ChunkSize=   32768      
   
  Set   OO4OSession   =   CreateObject("OracleInProcServer.XOraSession")  
  Set   OraDatabase   =   OO4OSession.OpenDatabase(sDataBase,   sUserPsw,   0)  
  Set   OraDynaset=OraDatabase.CreateDynaset(sSQL,ORADYN_DEFAULT)  
   
  if   not   OraDynaset.EOF   then  
  Response.ContentType   =   "application/msword"  
  i=0  
  Do    
  BytesRead   =   OraDynaset.Fields(sFieldImage).GetChunkByteEx(CurChunkEx,i   *   ChunkSize,   ChunkSize)    
      if   BytesRead   >   0   then    
    Response.BinaryWrite   CurChunkEx    
        end   if  
        i=i+1    
  Loop   Until   BytesRead   <   ChunkSize  
   
  Top

3 楼linysh(我爱小朋友)回复于 2004-12-03 21:55:22 得分 0

续上:  
  sSQL   =   "SELECT   tmp_file     FROM   t   WHERE   id   =   "   &   id  
   
   
  完。  
   
  Top

4 楼wangybyangxr(王永斌)回复于 2004-12-03 22:28:13 得分 0

BLOB是Oralce的一种大型对象数据类型。  
  大型对象数据类型分内部和外部两种,BLOB、CLOB属于内部的大型对象,   BFILE为外部大对象。  
   
  不说多余的话了,说一下怎样用BLOB吧:  
  Oracle   有一个包:DBMS_LOB支持大型对象功能的编程,它的函数/过程如下:  
   
  DBMS_JOB.APPEND(目标定位器,源定位器)  
  DBMS_JOB.READ(定位器,amount,offset,   buffer)    
            --amount:从文件中读取到缓冲中的字节数,  
            --offset   偏移值  
  DBMS_JOB.WRITE(定位器,amount,offset,   buffer)  
  DBMS_JOB.OPEN(定位器)  
  DBMS_JOB.CLOSE(定位器)  
  DBMS_JOB.ISOPEN(定位器)  
   
  举个例子:  
  用外部大型对象  
   
  1.建立一个目录对象:  
  CREATE   DIRECTORY   IMAGES_DIR AS   'C:\TEMP'  
   
  2.  
  DECLARE  
    V_FILE   BFILE;  
  BEGIN  
        V_FILE   :=   BFILENAME('IMAGES_DIR',   'image1.gif');  
        IF   DBMS_LOB.FILEEXISTS(V_FILE)   =   1   THEN       --等于1为文件存在。  
      INSERT   INTO   TABNAME   (bfile列)VALUES(V_FILE);  
                  COMMIT;  
        END   IF;  
  END;  
   
   
   
   
  Top

5 楼aaron_jg()回复于 2004-12-08 20:48:18 得分 0

谢谢两位前辈的热心帮助!  
   
    linysh哥:asp我看不懂啊  
   
  wangybyangxr(王永斌)   :是在sql   plus   中执行麽,我试了,为什么不行呢  
  不用插在blob列中麽?急盼答复……Top

相关问题

  • 用ado连接odbc的oracle数据原,可以读取数据集,但是无法更新,添加,为什么?
  • 能否实现定时读取Oracle数据库某个表中新添加的数据?
  • 给ORACLE数据库中添加字节型数据(图像,文件)的代码怎么写!
  • JSP如何从sqlserver中读取图像
  • 大图像的读取策略
  • 怎么读取png图像文件??
  • 图像读取进度条显示
  • vc++做图像读取!TIFFAdvanceDirectory函数
  • Oracle下图像的存取
  • 在 SQL Server2000 中保存图像及读取图像信息,怎么实现呢?

关键词

  • oo
  • oracle
  • oradatabase
  • osession
  • oradynaset
  • oo4
  • blob
  • tmp
  • set

得分解答快速导航

  • 帖主:aaron_jg

相关链接

  • Oracle类图书

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo