永发信息网

delphi 如何更新ACCESS保存的图片

答案:2  悬赏:70  手机版
解决时间 2021-03-14 23:16
  • 提问者网友:戎马万世
  • 2021-03-14 11:12
...
sql.text:='updata book set id='''+edit.text+''',book=:book where xu=xd';
...
parameters.ParamByname('book').loadfrmstream(mBook); 不能更新
提示:variable book might not have been initialized
not enougth adtual parameters
前提是我声明了内存变量和建立了内存,也把图片保存到了内存,显示图片绝对没有问题,问题是怎么去更新数据库里的图片

Parameters.GetFieldByName('FactoryLogo').LoadFromStream(mFactoryLogo);提示没有定义getFieldByname

2楼,我不知道updatabath()怎么用, 能不能给个例子

有知道的吗?
最佳答案
  • 五星知识达人网友:洒脱疯子
  • 2021-03-14 12:51
//设置属性
self.ADOQuery1.LockType:=ltBatchOptimistic;

//保存时候用
self.ADOQuery1.UpdateBatch();
全部回答
  • 1楼网友:梦中风几里
  • 2021-03-14 13:54

字段名称    类型    描述   id    自动编号   主键值 img ole对象   用来保存图片数据

procedure tform1.button1click(sender: tobject); var f:file of byte; size:longint; //文件大小 filepath,time:string; //文件时间 begin filepath:=extractfilepath(paramstr(0))+'demo.jpg';//图片地址为当前目录下 assignfile(f,filepath); reset(f); size:=filesize(f);//获取文件大小。 time:=datetimetostr(filedatetodatetime(fileage(filepath)));//获取文件创建时间。 closefile(f); adoquery1.close; adoquery1.sql.clear; adoquery1.sql.add('select * from image'); adoquery1.open; adoquery1.insert; adoquery1.fieldbyname('filename').asstring:=extractfilename(filepath); //存储文件名称 adoquery1.fieldbyname('filekind').asstring:=extractfileext(filepath); //存储文件扩展名。 adoquery1.fieldbyname('filesize').asinteger:=size; //存储文件的大小。 adoquery1.fieldbyname('filetime').asstring:=time; //存储文件的创建时间。 adoquery1.fieldbyname('savetime').asdatetime:=now();//存取文件的存储时间 tblobfield(adoquery1.fieldbyname('filecontent')).loadfromfile(filepath);

//图片的二进制流,存进去之后,数据库会显示(<<binary>>) adoquery1.post; end;

下面是读取还有代开的代码,添加一个timage空间进行显示,id为我的自增列,读取最后一条插入记录

procedure tform1.button2click(sender: tobject); var ms:tstream; jpg:tjpegimage; begin adoquery1.close; adoquery1.sql.clear; adoquery1.sql.add('select top 1 * from image order by id desc'); adoquery1.open; ms:=tstream.create; ms:=adoquery1.createblobstream(adoquery1.fieldbyname('filecontent'),bmread); ms.position :=0; jpg:=tjpegimage.create; jpg.loadfromstream(ms); image1.picture.assign(jpg); jpg.free; ms.free; end;

当然这里你也可以将其中的代码修改一下,不用显示就把“image1.picture.assign(jpg);”改为保存“jpg.savetofile(图片路径);”

详情可以上我的百度博客看

http://hi.baidu.com/ray108/blog/item/d2883a1181209908203f2e42.html

我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯