大雀软件园

首页 软件下载 安卓市场 苹果市场 电脑游戏 安卓游戏 文章资讯 驱动下载
技术开发 网页设计 图形图象 数据库 网络媒体 网络安全 站长CLUB 操作系统 媒体动画 安卓相关
当前位置: 首页 -> 技术开发 -> 其他相关 -> 数据库中图像数据的存取技术

数据库中图像数据的存取技术

时间: 2021-07-31 作者:daque

数据库运用步调开拓中图像数据的存取本领 delphi供给了数据考察(dataaccess)和数据遏制(datacontrols)的可视化控件,不妨简单赶快地爆发具备杰出界面且功效宏大的数据库运用步调。对于波及图像数据(含graphic字段)的数据库运用步调,如人事处置消息体例等,图像数据的存取本领是一个要害。但是,相关delphi下图象的存取,更加是图像的生存上面的本领百般材料上很少说起。底下,笔者贯串一个大略的例子来证明。 一、图像数据的生存 1.创造一个含有graphic字段的数据库列表。 在windowsisq(或databasedesktop)下create database mydb.gdb create table myfrieds(name varchar(15) notnull,telephone varchar(12), address varchar(30),zipvarchar(8),picture varchar(15),image blob); 个中,picture字段用来生存图像的称呼(囊括路途),image(graphic字符)则用来保存图像,其数据典型为“blob”。 2.创造窗体(如图1所示),树立窗体中各控件的属性。 该窗体的重要功效是将或人消息举行编纂和生存。须要提防的图像生存所用的图像框必需用timage而不许用tdbimage,编纂框宜用tedit而不宜用tdbedit,这一点与图像的读取凑巧差异。 个中,各重要控件的属性树立如次: datasource1.dataset:=table1; table1.databasename:=mydb.gdb; table1.tablename:=myfriends; table1.active:=true; 其余诸如caption之类的属性树立不复报告。 3.数据处置步调的创造。 (1)图像( .bmp文献)翻开的处置。 proceduretform1.pictopenbtnclick(sender:tobject); beginopendialog1.execute; image1.picture.loadfromfile(opendialog1.filename); end; (2)图像生存的处置。 图像生存的处置步调实行把在窗体1所编纂的消息囊括图像生存到相映的数据库中,其要害是要设置一个graphic典型的变量且该变量要用assign()因变量传播到相映数据库中生存。简直步调如次: proceduretform1.savebtnclick(sender:tobject); var graphic1:tgraphic; begin graphic1:=tgraphic.create; graphic1.loadfromfile(opendialog1.filename); table1.insert; table1.fieldbyname(’name’).asstring:=edit1.text; table1.fieldbyname(’telephon’).asstring:=edit2.text; table1.fieldbyname(’address’).asfloat:=edit3.text; table1.fieldbyname(’zip’).asfloat:=edit4.text; table1.fields[4].assign(graphic1); table1.post; graphic1.free; end; 二、图像数据的读取 在数据库数据(囊括graphic字段的数据)的读取和欣赏上面,delphi这一具备宏大代码机动天生功效的面向东西的开拓东西的出色性获得酣畅淋漓的展现。绝不夸大地说,不须要一条语句即可实行这一功效! 图中table1和datasource1的属性的树立与数据的生存局部(图1)沟通,所各别的是数据库数据的读取时用tdbedit和tdbimage控件而不必tedit和timage。控件tdbedit和tdbimage只有将datafield属性树立为其对立应的域;tdbnavigator的datasouce属性树立为datasource1即可。 tre  procedure tform1.button1click(sender: tobject); var sfilename:string; function blobcont(const filename:string):string;   begin   with tfilestream.create(filename,fmopenread) do    try     setlength(result,size);     read(pointer(result)^,size);    finally     free;    end;   end; begin if opendialog1.execute then   begin     sfilename:=opendialog1.filename;     adodataset1.append;     adodataset1.fieldbyname(’ff’).asstring:=blobcont(sfilename);     adodataset1.post;   end; end; procedure tform1.button2click(sender: tobject); var sfilename:string; bs:tadoblobstream; begin bs:=tadoblobstream.create(tblobfield(adodataset1.fieldbyname(’ff’)),bmread); try   sfilename:=’c:ff.doc’;//换成图片方法就不妨了   if fileexists(sfilename) then    deletefile(sfilename);   bs.savetofile(sfilename);   olecontainer1.createobjectfromfile(sfilename,false);   //olecontainer1.loadfromfile(sfilename);   //olecontainer1.loadfromstream()   //memo1.lines.loadfromfile(sfilename); // webbrowser1.navigate(pchar(sfilename)); finally   bs.free; end;

热门阅览

最新排行

Copyright © 2019-2021 大雀软件园(www.daque.cn) All Rights Reserved.