可以以流的形式存储. var ms: TMemoryStream; begin dst.active :=false; dst.commandtext :=''; dst.active :=true; ms := TMemoryStream.Create; ms.LoadFromFile(opendlg.filename); dst.append; (dst.FieldByName('Data') as TBlobField).LoadFromStream(ms); dst.post;//这是在access下的做法,在SQL中应该也差不多.
var
ms: TMemoryStream;
begin
dst.active :=false;
dst.commandtext :='';
dst.active :=true; ms := TMemoryStream.Create;
ms.LoadFromFile(opendlg.filename);
dst.append;
(dst.FieldByName('Data') as TBlobField).LoadFromStream(ms);
dst.post;//这是在access下的做法,在SQL中应该也差不多.
myfilestream:tfilestream;
myblob:tblobfield;
file_path:string;
begin
file_path:=opendlg1.filename;
adoquery1.append;
myfilestream:=tfilestream.Create(file_path,fmopenread);
myblob:=tblobfield(adoquery1.FieldByName('字段名'));
myblob.LoadFromStream(myfilestream);
myfilestream.Free;
end;
adoquery1.Post;
试试这样行不行,不行我也没办法了.
有点急,多谢楼上各位好汉先.
此代码应用到我给客户的一个的文档系统里的,仅作参考:procedure TF_Docadd.SpeedButton2Click(Sender: TObject);
var i:integer;
CURDOCNAME,NEWDOCNAME:STRING;
tmpStream :TMemoryStream;
begin
tmpStream:=TMemoryStream.CREATE;
gressbar(listview1.SelCount,'正在加入文件到数据库中...');
FOR i:=0 to listview1.SelCount-1 DO
BEGIN
GRESSPOS(I);
with datamd.ADOQ_doc do begin
CURDOCNAME:=LISTVIEW1.Items.Item[I].CAPTION;
///压缩文档
COMPRESSDOC(LISTVIEW1.Items.Item[I].SubItems.Strings[4]+CURDOCNAME,NEWDOCNAME); tmpStream.CLEAR;
tmpStream.Position:=0 ;
tmpStream.LoadFromFile(NEWDOCNAME);//加载压缩后的文档
sql.clear;
sql.Add('insert into 文档内容 '+
'(类别代码,文档类型,文档名称,文档大小,'+
'文档创建时间,文档修改时间,作者,主题,关键字,文档内容,文档扩展名)' +
' values ' +
'('+''''+datamd.SELECT_ID +''''+','+
'' +''''+LISTVIEW1.Items.Item[I].SubItems.Strings[3]+''''+','+
'' +''''+CURDOCNAME+''''+','+
'' +''''+LISTVIEW1.Items.Item[I].SubItems.Strings[0]+''''+','+
'' +''''+LISTVIEW1.Items.Item[I].SubItems.Strings[1]+''''+','+
'' +''''+LISTVIEW1.Items.Item[I].SubItems.Strings[2]+''''+','+
'' +''''+DATAMD.curuserid+''''+','+
'' +''''+COPY(CURDOCNAME,1,POS('.',CURDOCNAME)-1)+''''+','+
'' +''''+COPY(CURDOCNAME,1,POS('.',CURDOCNAME)-1)+''''+','+
'' +':MY_DOC'+','+
'' +''''+ ExtractFileExt(CURDOCNAME)+''''+''+
')' );
Parameters.ParamByName('MY_DOC').LoadFromStream(tmpStream,ftBlob);
//MEMO1.Lines.Add(SQL.Text);
EXECSQL;
end; END; GRESSRELEASE;
TMPSTREAM.Free;
LISTVIEW1.Items.Clear;
end;
myfilestream:tfilestream;
myblob:tblobfield;
file_path:string;
begin
file_path:=opendlg1.filename;
adoquery1.append;
myfilestream:=tfilestream.Create(file_path,fmopenread);
myblob:=tblobfield(adoquery1.FieldByName('字段名'));
myblob.LoadFromStream(myfilestream);
myfilestream.Free;
end;
adoquery1.Post;
试试这样行不行,不行我也没办法了.這個代碼我試了,可以保存