100分紧急求助 如何在Access数据库里存取一个文本文件,也就是说先将一个文本文件存入数据库中,然后,在需要时从数据库里读取该文本文件,通过delphi界面显示出来。当然不能以字符类型存取。小弟我是本论坛的新手,敬请各位前辈赐教! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 用文件流读文件..转成内存流..存入BLOB类型的字段..这样就可以了... SQL.ADD(INSERT INTO TBL1 (TXTFILE)) SQL.ADD(VALUES (:TXTFILE)) PARAMBYNAME('TXTFILE').LoadFromStream(FILENAME); EXECSQL; to jpyc: 你能继续回答我的问题吗?to yhj78: 非常感谢你的源代码,但我还是不太明白!另外,感谢以上各位给我出主意的人,望能继续回答我的问题。 写两个函数procedure databasetofile(clientdataset:Tclientdataset;filename,fieldname:string);overload;procedure databasetofile(adotable:Tadotable;filename,fieldname:string);overload;procedure databasetofile(adotable:Tadoquery;filename,fieldname:string);overload; procedure databasetofile(table:Ttable;filename,fieldname:string);overload;procedure filetodatabase(clientdataset:Tclientdataset;filename,fieldname:string);overload;procedure filetodatabase(adotable:Tadotable;filename,fieldname:string);overload;procedure filetodatabase(talbe:Ttable;filename,fieldname:string);overload; 示例procedure filetodatabase(clientdataset:Tclientdataset;filename,fieldname:string);overload;var MemSize: Integer; Buffer: PChar; MyFile: TFileStream; Stream: TBlobStream; mfilename:string;begin myfile:=Tfilestream.Create(filename,fmopenread); memsize:=myfile.Size; inc(memsize); buffer:=allocmem(memsize); stream:=Tblobstream(clientdataset.CreateBlobStream(clientdataset.FieldByName(fieldname),bmwrite)); try Stream.Seek(0, soFromBeginning); MyFile.Read(Buffer^,MemSize); Stream.Write(Buffer^,MemSize); finally MyFile.Free; Stream.Free; end;end;procedure databasetofile(clientdataset:Tclientdataset;filename,fieldname:string);var MemSize: Integer; Buffer: PChar; MyFile: TFileStream; Stream: TblobStream;begin myfile:=Tfilestream.Create(filename,fmcreate); stream:=Tblobstream(clientdataset.CreateBlobStream(clientdataset.FieldByName(fieldname),bmread)); memsize:=stream.Size; inc(memsize); buffer:=allocmem(memsize); try Stream.Seek(0, soFromBeginning); stream.Read(buffer^,memsize); Myfile.Write(buffer^,memsize); finally MyFile.Free; Stream.Free; end;end; 写入数据库:...table1.insert;Filetodatabase(table1,filepath+'\temp.txt','textfield');table1.post;读取...Fieldtodatabase(table1,fieldpath+'temp.txt','textfield');memo1.lines.loadfromfile(fieldpath+'temp.txt'); to minercxy: 朋友,你的代码很详细,也完全可以执行,临时文本文件也能生成,但在读取时该文件不能在memo中显示,memo中显示的是一个‘#’符号,不知原因何在?你试过吗?我用的Adoquery控件。小弟我先在此谢过了! 直接检查文本文件在写入数据库之前,和从数据库读取之后,文件是否正确。先不使用memo.函数肯定不会有问题。我们不光用这个操作文本文件的。 delphi2010 遇见的怪事 用delphi打开程序弹出内存不能read,在线求解 我设置DateTimePicker.Font,但是总是不会改变,请问怎么解决??? 有关新增记录的问题 (在线等待!!!) IXMLDocument内存泄漏的问题 如何实现象winamp这样的功能呢? 在子窗体中如何对主窗体进行设置? 关于客户端传递参数到中间层的问题! 当Edit控件的Enabled属性为False时,Edit的字体颜色怎么控制? 关于文本读写的问题 请教在ADO是否有象BDE的updatesql的控件? access 问题,请高手帮忙!!
这样就可以了...
SQL.ADD(INSERT INTO TBL1 (TXTFILE))
SQL.ADD(VALUES (:TXTFILE))
PARAMBYNAME('TXTFILE').LoadFromStream(FILENAME);
EXECSQL;
to yhj78: 非常感谢你的源代码,但我还是不太明白!
另外,感谢以上各位给我出主意的人,望能继续回答我的问题。
procedure databasetofile(clientdataset:Tclientdataset;filename,fieldname:string);overload;
procedure databasetofile(adotable:Tadotable;filename,fieldname:string);overload;
procedure databasetofile(adotable:Tadoquery;filename,fieldname:string);overload;
procedure databasetofile(table:Ttable;filename,fieldname:string);overload;
procedure filetodatabase(clientdataset:Tclientdataset;filename,fieldname:string);overload;
procedure filetodatabase(adotable:Tadotable;filename,fieldname:string);overload;
procedure filetodatabase(talbe:Ttable;filename,fieldname:string);overload;
procedure filetodatabase(clientdataset:Tclientdataset;filename,fieldname:string);overload;
var
MemSize: Integer;
Buffer: PChar;
MyFile: TFileStream;
Stream: TBlobStream;
mfilename:string;
begin
myfile:=Tfilestream.Create(filename,fmopenread);
memsize:=myfile.Size;
inc(memsize);
buffer:=allocmem(memsize);
stream:=Tblobstream(clientdataset.CreateBlobStream(clientdataset.FieldByName(fieldname),bmwrite));
try
Stream.Seek(0, soFromBeginning);
MyFile.Read(Buffer^,MemSize);
Stream.Write(Buffer^,MemSize);
finally
MyFile.Free;
Stream.Free;
end;end;
procedure databasetofile(clientdataset:Tclientdataset;filename,fieldname:string);
var
MemSize: Integer;
Buffer: PChar;
MyFile: TFileStream;
Stream: TblobStream;
begin
myfile:=Tfilestream.Create(filename,fmcreate);
stream:=Tblobstream(clientdataset.CreateBlobStream(clientdataset.FieldByName(fieldname),bmread));
memsize:=stream.Size;
inc(memsize);
buffer:=allocmem(memsize);
try
Stream.Seek(0, soFromBeginning);
stream.Read(buffer^,memsize);
Myfile.Write(buffer^,memsize);
finally
MyFile.Free;
Stream.Free;
end;end;
...
table1.insert;
Filetodatabase(table1,filepath+'\temp.txt','textfield');
table1.post;读取
...
Fieldtodatabase(table1,fieldpath+'temp.txt','textfield');
memo1.lines.loadfromfile(fieldpath+'temp.txt');