大家都知道TClientDataSet可以将内容输出到一个文件,现在我想将一个图片(或者其他文件)存入TClientDataSet的一个blob字段(或者其他类型,比如Graphic,只要能达到目的),之后将当前TClientDataSet的内容输出到一个文件中,并能读回TClientDataSet中,怎么做?可以额外给分!
解决方案 »
- delphi -用button对SQL执行循环
- 各位大虾请教WebBrowser FreeInstance 和 NewInstance 以及 InitInstance 具体用法。在线等待,急急!
- 在windows2000中如何模拟输入用户名、密码来访问网络邻居?(100分)
- 晕!!能写数据进去不知如何读注册表中的数据
- 自定义纸张--在线等待
- 关于treeview的问题?
- 调用dll时出现的问题。
- treeview的簡單問題
- 关于Access的问题? (cxj_Access)
- 关于数据库密码的问题
- 请问关于拖动的时候的虚框的问题
- (高分100分)delphi中调用一中间件上的远程过程导致中间件异常终止问题,高手帮忙
TBlobField(ClientDataSet1.FieldByName('fieldname')).LoadFromFile('filename');//保存到文件
TBlobField(ClientDataSet1.FieldByName('fieldname')).SaveToFile('filename');
//文件存储到数据库
procedure FileToDB(ADOQuery:TADOQuery;FileName,FieldName:String);
var
aFile:TADOBlobStream;
begin
ADOQuery.Edit;
aFile:=TADOBlobStream.Create((ADOQuery.Fieldbyname(FieldName) as TBlobField),bmWrite);
if FileName = '' then
aFile.Truncate
else
aFile.LoadFromFile(filename);
aFile.free;
ADOQuery.Post; Application.MessageBox(pchar('保存成功'),pchar(Application.title),mb_ok+mb_iconinformation);
end;
//从数据库取得文件
function FileFromDB(FieldName,outfile:string;ADOQuery:TADOQuery):boolean;
var
AFile:TADOBlobStream;
fileName:string;
i:integer;
begin //将QUERY控件ADOQuery中字段fieldName的内容作为BOLB类型字段保存到文件SavePath+preFileName+COUNT中去
result:=false;
with ADOQuery do
begin
if not eof then
begin
if (Fieldbyname(FieldName).isnull)or
(not (Fieldbyname(FieldName) is TBlobField)) then
//空内容或非二进制内容直接跳过
exit; AFile:=TADOBlobStream.Create((Fieldbyname(FieldName) as TBlobField),bmRead);
AFile.SaveToFile(outfile);
result:=true;
AFile.free;
end;
end;
end;