Lazarus中文社区

 找回密码
 立即注册(注册审核可向QQ群索取)

QQ登录

只需一步,快速开始

Lazarus IDE and 组件 下载地址版权申明
查看: 3192|回复: 6

access ole对象中的图片如何转存到sqlite中

[复制链接]

该用户从未签到

发表于 2011-12-13 21:54:55 | 显示全部楼层 |阅读模式
如题,想将access数据库转换成sqlite ,其中有ole对象的字段存放图片,如何做?
回复

使用道具 举报

该用户从未签到

 楼主| 发表于 2011-12-16 01:13:15 | 显示全部楼层
最后将图片用dbtools 导入到sqlite中,图象可以在sqlite expert中显示出来,但我要用image1显示时却出现jpeg err的错误,代码如下,帮看看有什么错误。
var
  mem:Tstream;
  jpeg:TJpegimage;

begin
  jpeg:=TJpegimage.Create;
  mem:=zquery1.CreateBlobStream(zquery1.FieldByName('相片'),bmRead);
  mem.Position:=0;
  if mem.Size>0 then
  begin
    jpeg.LoadFromStream(mem);
    image1.Picture.Assign(jpeg);
  end;
回复 支持 反对

使用道具 举报

该用户从未签到

 楼主| 发表于 2011-12-16 01:27:44 | 显示全部楼层
使用如下代码,仍提示jpeg error

tblobfield(zquery1.FieldByName('a9901')).SaveToFile('temp.jpg');
  image1.Picture.LoadFromFile('temp.jpg');
回复 支持 反对

使用道具 举报

该用户从未签到

 楼主| 发表于 2011-12-16 01:59:33 | 显示全部楼层
自已解决了,是zero控件的问题
我用lazarus自带的sqliteconn连接就解决了。
回复 支持 反对

使用道具 举报

该用户从未签到

发表于 2011-12-16 08:38:39 | 显示全部楼层

回 3楼(凡人晓悟) 的帖子

凡人晓悟:自已解决了,是zero控件的问题
我用lazarus自带的sqliteconn连接就解决了。 (2011-12-16 01:59)
zero有问题?俺怎么没碰上?
  1. uses
  2.   classes, sysutils, db, fileutil, forms, controls, graphics, dialogs, DbCtrls,
  3.   StdCtrls, Buttons, ZConnection, ZDataset, ZAbstractDataset,lconvencoding,fpimage;
  4. type
  5.   { tform1 }
  6.   tform1 = class(tform)
  7.     datasource1: tdatasource;
  8.     dbtxtid: TDBEdit;
  9.     dbtxtpath: TDBEdit;
  10.     dbimage1: tdbimage;
  11.     dbnavigator1: tdbnavigator;
  12.     label1: tlabel;
  13.     label2: tlabel;
  14.     opendialog1: topendialog;
  15.     speedbutton1: tspeedbutton;
  16.     zconnection1: tzconnection;
  17.     zquery1: tzquery;
  18.    
  19.     procedure writeimagetodb;
  20.     procedure readimagefromdb;
  21.   private
  22.     { private declarations }
  23.   public
  24.     { public declarations }
  25.   end;
  26. var
  27.   form1: tform1;
  28.   fstream:tstream;
  29.   fpicture:tjpegimage;
  30. implementation
  31. {$R *.lfm}
  32. { tform1 }
  33. procedure tform1.writeimagetodb;
  34. begin
  35.   try
  36.     tblobfield(zquery1.fieldbyname('picture')).LoadFromFile(utf8tocp936(dbtxtpath.text));
  37.   except
  38.     on e:exception do
  39.     showmessage(e.Message);
  40.   end;
  41. end;
  42. procedure tform1.readimagefromdb;
  43. begin
  44.   if not (tblobfield(zquery1.FieldByName('picture')).IsNull) then
  45.      begin
  46.        fstream:=zquery1.CreateBlobStream(zquery1.FieldByName('picture'),bmread);
  47.        fpicture:=tjpegimage.create;
  48.        try
  49.        fpicture.LoadFromStream(fstream);
  50.        dbimage1.Picture.Assign(fpicture);
  51.        finally
  52.          fstream.Free;
  53.          fpicture.Free;
  54.        end;
  55.      end;
  56. end;
复制代码
回复 支持 反对

使用道具 举报

该用户从未签到

 楼主| 发表于 2011-12-16 13:40:07 | 显示全部楼层
我用的是ZEOSDBO7.0 sqlite 3..7.9  ,数据是用dbmanage3.4.7(dbmanage3.3.1导入的其他sqlite管理工具不能识别)从原有access中导入。用ZConnection1连接后其他字段可正常显示,图片不能显示,提示jpeg 错误,改用自带的SQLite3Connection1连接,可正常显示图片。
回复 支持 反对

使用道具 举报

该用户从未签到

发表于 2012-6-6 14:28:31 | 显示全部楼层
我用的是ZEOSDBO7.0 sqlite 3..7.9  ,数据是用dbmanage3.4.7(dbmanage3.3.1导入的其他sqlite管理工具不能识别)
回复 支持 反对

使用道具 举报

*滑块验证:

本版积分规则

QQ|手机版|小黑屋|Lazarus中国|Lazarus中文社区 ( 鄂ICP备16006501号-1 )

GMT+8, 2025-5-2 07:31 , Processed in 0.030441 second(s), 10 queries , Redis On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表