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

二进制流的问题!

楼主anglely168(左八荣,右八耻.代表在中间,和谐在胸口。人挡杀人,佛挡杀佛.)2001-12-05 14:22:21 在 Delphi / VCL组件开发及应用 提问

我才保存二进制流到数据库的时候,编写代码如下:  
  procedure   TForm1.savefinger(p:pchar);  
  var       Stream:   TBlobStream;  
  begin  
      with   query1   do  
      begin  
          close;  
          sql.clear;  
          sql.add('insert   into   finger   value(:id,:finger)');  
          paramByName('ID').AsInteger:=1;  
          Stream   :=TBlobStream.Create(TBlobField(parambyname       ('finger')),bmReadWrite   );  
          try  
              Stream.Seek(0,   2);  
              Stream.Write(p^,   400);  
          finally  
              Stream.Free;  
          end;  
          ExecSQL;  
      end;  
  end;  
  在执行到stream:=TBlobStream.Create的时候就出错了,提示非法的内存访问!  
  我看了delphi的帮组代码都是这样写的!不知为什么出错?请各位大虾指点迷津!  
  问题点数:30、回复次数:3Top

1 楼zswang(伴水清清)(专家门诊清洁工)回复于 2001-12-05 14:29:15 得分 15

//ParamByName()   的类型是TParam不是TField  
  var  
      Stream:   TMemoryStream;  
  begin  
      with   query1   do   begin  
          close;  
          sql.clear;  
          sql.add('insert   into   finger   value(:id,:finger)');  
          Stream   :=   TMemoryStream.Create;  
          try  
              Stream.Seek(0,   2);  
              Stream.Write(p^,   400);  
              parambyname('finger').LoadFromStream(Stream,   ftBlob);  
              paramByName('ID').AsInteger:=1;  
          finally  
              Stream.Free;  
          end;  
          ExecSQL;  
      end;  
  end;  
  Top

2 楼cobi(我是小新)回复于 2001-12-05 14:32:44 得分 15

Stream   :=TBlobStream.Create(TBlobField(parambyname     ('finger')),bmReadWrite   );  
  try  
      Stream.Seek(0,   2);  
      Stream.Write(p^,   400);  
  finally  
      Stream.Free;  
  end;  
   
   
  以上的需要更改一下,你试一下这样行不:  
  stream   :=   ...;  
  ParamByName('Img').Loadfromstream(stream);  
          Top

3 楼anglely168(左八荣,右八耻.代表在中间,和谐在胸口。人挡杀人,佛挡杀佛.)回复于 2001-12-05 15:07:46 得分 0

都是过了!还是不行!不过,我用table好像保存进去了!我们项目给我提供的接口是一个存续过程,不用我直接对表操作,用存续过程storyproc和query差不多!Top

相关问题

  • 二进制流?
  • 关于二进制流的Deserialize问题!
  • 二进制流写文件的问题!
  • 求助:关于INI写二进制流
  • 二进制流文件,为什么里面不是二进制的?
  • 请问:数据流与二进制流的区别?
  • 数据库中如何存储二进制流
  • 如何将二进制流存入剪贴板中
  • socket接收二进制数据流的问题!!(在线等待)
  • 请问如何将二进制流写成图像文件。

关键词

  • sql
  • parambyname
  • tblobstream
  • stream
  • finger
  • seek
  • query
  • begin
  • free
  • try

得分解答快速导航

  • 帖主:anglely168
  • zswang
  • cobi

相关链接

  • Delphi类图书
  • Delphi类源码下载
  • Delphi控件下载

广告也精彩

反馈

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