您的位置:首页 > 数据库

数据库中存放不规则数据方法!

2005-01-11 01:08 411 查看
将要存入的文件定义为Tfilestream,可通过流式文件保存的BLOB型的数据库字段中.

至于从数据库字段中取出,也是首先将该字段保存为流savetostream,然后定义一个文件

流tfilestream,采用loadfromsteam即可.

该方法可以实现对任意文件类型的数据库存储.  

filename:string;

//这里是从系统中取得一个临时文件

function gettemporyfilename:string;

const  max_path=144;

var

 lppathbuffer:pchar;

 lpbuffer:pchar;

begin

 getmem(lpbuffer,max_path);

 getmem(lppathbuffer,max_path);

 gettemppath(max_path,lppathbuffer);

 gettempfilename(lppathbuffer,'tem',0,lpbuffer);

 freemem(lppathbuffer,max_path);

 gettempfilename(gettempdrive('c'),'tem',0,lpbuffer);

 result:=strpas(lpbuffer);

 freemem(lpbuffer,max_path);

end;

//将一个AVI文件写到blob字段中去

procedure tform1,button1click(sender:tobject);

var

filestream:tfilesteam;//to load the avi file

blobstream:tblobstream;//to save to the bolb

begin

application.processmessages;

button1.enabled:=false;

button2.enabled:=false;

filestream:tfilestream.create('ppath',fmopenread);//ppath是这个avi的路径

table1.edit;

//为table1avi字段创建一个blobstream

blobstream:=tblobstream.create(table1avi,bmreadwrite);

//移动到stream的首位

blobstream.seek(0,sofrombeginning);

//清空流数据

blobstream.truncate;

//将filestream的内容拷贝到blobstream

blobstream.copyfrom(filestream,filestream.size);

//释放流

filestream.free;

blobstream.free;

//添加记录

table1.post;

//使buttons可用

button1.enabled:=true;

button2.enabled:=true;

end;

procedure tform1.button2click(sender:tobject);

var

filestream:tfilestream;//a temp file

bolobstream:tblobstream;//the AVI blob

begin

//为AVI字段创建BLOB数据流

bolobstream:=tblobstream.create(table1avi,bmread);

if blobstream.size=0 then

begin

blobstream.free;

exit;

end;

//关闭media player

mediaplayer1.close;

//重值文件名

mediaplayer1.filename:='';

//刷新显示窗口

mediaplayer1.display:=panel1;

panel1.refresh;

//创建前删除同名的临时文件

if filename<>'' then

deletefile(filename);

//设置临时文件名

filename:=gettemporaryfilename;

//为临时文件创建文件流

filestream:=tfilestream.create(filename,fmcreate or fmopenwrite);

//拷贝blob到临时文件中

filestream.copyfrom(blobstream,blobstream.size);

//释放流

filestream.free;

blobstream.free;

//设置media player播放AVI文件

mediaplayer1.filename:=filename;

mediaplayer1.devicetype:=dtavivideo;

mediaplayer1.open;

mediaplayer1.play;

end;

procedure tform1.formdestroy(sender:tobject);

begin

//取消临时文件和media player的关联

mediaplayer1.close;

mediaplayer1.filename:='';

//删除临时文件

if filename<>'' then

deletefile(filename);

end;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: