CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  其他数据库开发 >  SQL Anywhere Studio

用 ADO 对 Oracle blob 字段读写

楼主zzy4486(世界)2001-11-13 18:17:54 在 其他数据库开发 / SQL Anywhere Studio 提问

有谁用过   ADO   对ORACLE   BLOB字段读写   有谁做过请指教  
  急!!! 问题点数:280、回复次数:16Top

1 楼telstar(小李大刀)回复于 2001-11-13 18:25:11 得分 10

关注Top

2 楼zzy4486(世界)回复于 2001-11-13 18:31:29 得分 0

我用TADOBLOBSTREAM   对   BLOB   字段操作   好象是写进表里了   可是请不出来  
  用TBLOBFIELD也是一样    
  有知是哪的问题  
  我在外地出差  
  搞不定就没办法回去,   请各位高手快帮帮忙!!!!!Top

3 楼cobi(我是小新)回复于 2001-11-13 20:04:37 得分 10

看以下的代码能否帮助你,query和adoquery在很多地方都是相似的。  
  procedure   TForm1.Button3Click(Sender:   TObject);    
  var    
      Buffer:   PChar;    
      MemSize:   Integer;    
      Stream:   TBlobStream;    
  begin    
      with     query1     do    
      begin    
              Close;    
              Sql.Clear;    
              Sql.Add('select   *     from       FingerData     where     ID=3   ');    
              Open;    
              IF     RecordCount=0     then    
              begin    
                      Showmessage('No     Data   ');    
                      Exit;    
              end;    
      end;    
      Stream   :=   TBlobStream.Create(query1.FieldByName('Fingers')   as   TBlobField,   bmRead);    
      try    
          MemSize   :=   Stream.Size;    
          Inc(MemSize);    
          Buffer   :=   AllocMem(MemSize);    
          try    
              Stream.Read(Buffer^,   MemSize);    
              Memo1.SetTextBuf(Buffer);                
          finally    
              FreeMem(Buffer,   MemSize);    
          end;    
      finally    
          Stream.Free;    
      end;    
  end;  
   
  procedure   TForm1.Button1Click(Sender:   TObject);    
  var    
      Stream:   TBlobStream;    
      S:   string;    
  begin    
      with   Table1   do    
      begin    
          Open;    
          insert;    
          FieldByName('ID').AsInteger:=3;    
          Stream   :=TBlobStream.Create(TBlobField(FieldByName('Fingers')),bmReadWrite   );    
          try    
              Stream.Seek(0,   2);      
              S   :=   'My   Blob   Stream   Data';        
              Stream.Write(pchar(S)^,   Length(S));    
          finally    
              Stream.Free;    
          end;    
          Post;    
      end;    
  end;Top

4 楼xBai21(小新)回复于 2001-11-14 00:42:20 得分 10

如果作为永久字段可以用   savetofile方法Top

5 楼zzy4486(世界)回复于 2001-11-14 11:33:12 得分 0

永久字段是在建表的时候设的吗  
  如何设???Top

6 楼xBai21(小新)回复于 2001-11-15 17:23:59 得分 10

设计界面中  
  adotable   在tablename   属性设置正确的时候  
  adoquery   在sql   属性为返回视图时候  
  你只要把   鼠标移动到   控件上按右键   选择add   all   field   就可以  
  生成的永久字段名称应该是   adotable字段名(控件名为   adotable)  
  adoquery字段名(控件名为   adoquery)  
        Top

7 楼zzy4486(世界)回复于 2001-11-18 18:00:56 得分 0

不成  
  各种方法我都试过了,现在问题是用ADO可以写BLOB  
  可读时为空(用TBlobField   和   TADOBlobStream   等等结果都是一样  
  用BDE可以读出,为什么用ADO就是不行Top

8 楼galeboy(狂风)回复于 2001-11-18 18:13:24 得分 20

这是我的贴子,有人知道原因吗Top

9 楼cobi(我是小新)回复于 2001-11-18 19:28:01 得分 20

你现在的重要问题在那里?Top

10 楼galeboy(狂风)回复于 2001-11-19 11:25:29 得分 20

就是读不出来,  
  已经写进去了,因为用BDE可以读出来,可用ADO却不行  
  Top

11 楼cobi(我是小新)回复于 2001-11-20 16:00:34 得分 20

var   BS   ;TadoBlobstream;  
   
  BS   :=   TADOBlobstream.create(TBlobField(adodataset1.fieldbyname('blobs')),bmread);  
   
  bs.savetofile(filename);  
   
  这样做可以吗?我用的是一个adodataset组件,用commandtext取回数据。  
  Top

12 楼ruisheng(咳咳)回复于 2001-11-20 16:25:58 得分 20

/////////读/////////////////////////////////////  
  procedure   TForm1.Button1Click(Sender:   TObject);  
  var  
  Stream1:   TADOBlobStream;  
  sql1:   string;  
  begin  
          DM.ADOQuery1.Close;  
          DM.ADOQuery1.SQL.Clear;  
        sql1   :=   'select   *   from     gzrr';  
        DM.ADOQuery1.SQL.Add(sql1);  
        DM.ADOQuery1.Open;  
        DM.ADOQuery1.Last;  
        DM.ADOQuery1.INsert;  
              try  
                  stream1   :=     TADOBlobStream.Create(DM.ADOQuery1.FieldByName('RR')as   TBlobField,bmReadWrite);  
                  stream1.LoadFromFile('C:\My   Documents\aaa.doc');  
                  DM.ADOQuery1.FieldByName('gzs_gzbh').AsString   :=   '123';  
                  DM.ADOQuery1.FieldByName('gzs_flno').AsString   :=   '1232121212';  
                  RichEdit1.Lines.SaveToStream(stream1);  
              finally  
                  stream1.Free;  
              end;  
              DM.ADOQuery1.post;  
  end;  
  ///////////写///////////////////////////////////////////////////  
  rocedure   TForm1.BitBtn1Click(Sender:   TObject);  
  var  
      sql1:   string;  
      Stream1:   TADOBlobStream;  
  begin  
      try  
        DM.ADOConnection1.BeginTrans;  
        DM.ADOQuery1.Close;  
        DM.ADOQuery1.SQL.Clear;  
        sql1   :=   'select   *   from     gzs';  
        DM.ADOQuery1.SQL.Add(sql1);  
        DM.ADOQuery1.Open;  
        DM.ADOQuery1.Last;  
      //   DM.ADOQuery1.First;  
        stream1   :=     TADOBlobStream.Create(DM.ADOQuery1.FieldByName('rr')as   TBlobField,bmRead);  
        stream1.SaveToFile('c:\abc.doc');  
      //   RichEdit1.Lines.LoadFromStream(stream1);  
        stream1.Free;  
        DM.ADOConnection1.CommitTrans;  
      except  
        DM.ADOConnection1.RollbackTrans;  
      end;        
  end;  
   
  给分哦  
  Top

13 楼galeboy(狂风)回复于 2001-11-21 19:18:35 得分 20

To   ruisheng(咳咳)   
  这种方法我早就试过,行不通,文件稍大时,读出的文件长度为0Top

14 楼commandio(好好学习)回复于 2001-11-22 14:59:45 得分 20

我也遇到类似的问题,似乎ADO   对   Oracle   blob不支持,只要表中含有blob,就不能读出,不管用adotable还是adoquery->select   *   from   表   ,都会提示数据类型不被支持。  
  不要浪费时间,建议用bde解决。   Top

15 楼galeboy(狂风)回复于 2001-11-27 17:33:12 得分 100

真的没办法了Top

16 楼zzy4486(世界)回复于 2001-12-05 17:23:28 得分 0

已经解决Top

相关问题

  • 用 ADO 对 Oracle blob 字段读写 (外加 300 分)
  • 用 ADO 对 Oracle blob 字段读写 (谁能解决送1000分)
  • 在Oracle中写BLOB字段
  • 在VC++里如何通过ADO访问ORACLE里的BLOB字段内容?
  • ADO操作ORACLE的BLOB字段的问题?急啊,请高手帮忙
  • 急!vc使用ADO访问ORACLE数据库,怎样读写BLOB字段?
  • 谁用过ADO技术访问过oracle数据库,特别是oracle中的大字段:如BLOB?
  • 如何在ORACLE中保存BLOB字段
  • oracle中blob字段写入问题
  • ★★★Oracle BLOB字段的读问题★★★

关键词

  • 字段
  • ado
  • 控件
  • adoquery
  • tadoblobstream
  • dm
  • memsize
  • tblobfield
  • tblobstream
  • fieldbyname

得分解答快速导航

  • 帖主:zzy4486
  • telstar
  • cobi
  • xBai21
  • xBai21
  • galeboy
  • cobi
  • galeboy
  • cobi
  • ruisheng
  • galeboy
  • commandio
  • galeboy

相关链接

  • CSDN Blog
  • 技术文档
  • 代码下载
  • 第二书店
  • 读书频道

广告也精彩

反馈

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