下面是为数据库添加二进制数据(IMAGE类型)的例子,以供参考: var MemStream: TMemoryStream; begin if OpenPictureDialog1.Execute then begin for I := 0 to OpenPictureDialog1.Files.Count - 1 do //添加文件 begin MemStream := TMemoryStream.Create; //创建流 try MemStream.LoadFromFile(OpenPictureDialog1.Files[I]); //将文件读到流中去 MemStream.Seek(0, soFromBeginning); Compress(MemStream); //压缩文件 MemStream.Seek(0, soFromBeginning); with ADOQuery2 do begin Append; TBlobField(FieldByName('图片)).LoadFromStream(MemStream); ADOQuery2.Post; end; finally MemStream.Free; end; end; end;
var
MemStream: TMemoryStream;
begin
if OpenPictureDialog1.Execute then
begin
for I := 0 to OpenPictureDialog1.Files.Count - 1 do //添加文件
begin
MemStream := TMemoryStream.Create; //创建流
try
MemStream.LoadFromFile(OpenPictureDialog1.Files[I]); //将文件读到流中去
MemStream.Seek(0, soFromBeginning);
Compress(MemStream); //压缩文件
MemStream.Seek(0, soFromBeginning);
with ADOQuery2 do
begin
Append;
TBlobField(FieldByName('图片)).LoadFromStream(MemStream);
ADOQuery2.Post;
end;
finally
MemStream.Free;
end;
end;
end;
procedure Compress(var CompressedStream: TMemoryStream);
var
SourceStream: TCompressionStream;
DestStream: TMemoryStream;
Count: Integer;
Begin
Count := CompressedStream.Size;
DestStream := TMemoryStream.Create;
SourceStream:=TCompressionStream.Create(clMax, DestStream);
Try
CompressedStream.SaveToStream(SourceStream);
SourceStream.Free;
CompressedStream.Clear;
CompressedStream.WriteBuffer(Count, SizeOf(Count));
CompressedStream.CopyFrom(DestStream, 0);
finally
DestStream.Free;
end;
end;