var BlobStream: TADOBlobStream; begin ... while not AQOQUERy1.eof do begin with AQOQUERy1 do begin BlobStream := TADOBlobStream.Create(TBlobField(FieldByName('Photo'+inttostr(RECNO))), bmRead); try LoadTmpPhotoFileName := GetWinTempDir +inttostr(RECNO) +'JPG'; if FileExists(LoadTmpPhotoFileName) then //先删除同名存在的文件 DeleteFile(LoadTmpPhotoFileName); BlobStream.SaveToFile(LoadTmpPhotoFileName); if GetFileSize(LoadTmpPhotoFileName) > 0 then (FindComponent('Image'+inttostr(RECNO)).as TImage).Picture.LoadFromFile(LoadTmpPhotoFileName); finally BlobStream.Free; end; end;//End with end;//End while 大体思路是这样,可能里边有拼写错误^_^
和程序用ADO连
ADOConnection ADOTable DateSource
这个帖子你不是昨天已经问过了么?
BlobStream: TADOBlobStream;
begin
...
while not AQOQUERy1.eof do
begin
with AQOQUERy1 do
begin
BlobStream := TADOBlobStream.Create(TBlobField(FieldByName('Photo'+inttostr(RECNO))), bmRead);
try
LoadTmpPhotoFileName := GetWinTempDir +inttostr(RECNO) +'JPG';
if FileExists(LoadTmpPhotoFileName) then //先删除同名存在的文件
DeleteFile(LoadTmpPhotoFileName);
BlobStream.SaveToFile(LoadTmpPhotoFileName); if GetFileSize(LoadTmpPhotoFileName) > 0 then
(FindComponent('Image'+inttostr(RECNO)).as TImage).Picture.LoadFromFile(LoadTmpPhotoFileName);
finally
BlobStream.Free;
end;
end;//End with
end;//End while
大体思路是这样,可能里边有拼写错误^_^
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, DB, ADODB;type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
Image1: TImage;
OpenDialog1: TOpenDialog;
ADOConnection1: TADOConnection;
Button3: TButton;
ADOQuery1: TADOQuery;
Button4: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Button4Click(Sender: TObject);
private
FS: TFileStream;
MS: TMemoryStream ;
SM: TStream;
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
var
chFilePath : string;
begin
OpenDialog1.Filter := '图片|*.BMP';
if OpenDialog1.Execute then
chFilePath := OpenDialog1.FileName ;
FS := TFileStream.Create(chFilePath,fmOpenRead);
Image1.Picture.Bitmap.LoadFromStream(FS);
FS.Free;
end;procedure TForm1.Button2Click(Sender: TObject);
//图片存放
begin
MS := TMemoryStream.Create ;
Image1.Picture.Bitmap.SaveToStream(MS);
Ms.Position := 0;
AdoQuery1.Append;
TBlobField(AdoQuery1.FieldByName('Pic')).LoadFromStream(MS);
AdoQuery1.Post;
Ms.Free;
ShowMessage('Success');end;procedure TForm1.Button3Click(Sender: TObject);
//图片读取
begin
try
try
SM := AdoQuery1.CreateBlobStream(AdoQuery1.FieldByName('Pic'),bmRead );
if SM.Size > 0 then
ShowMessage('有位图')
else
ShowMessage('无位图');
Image1.Picture.Bitmap.LoadFromStream(SM);
except
raise Exception.Create('位图存放错误!');
end;
finally
SM.Free;
end;
end;procedure TForm1.FormCreate(Sender: TObject);
begin
ADoConnection1.Connected := True;
AdoQuery1.SQL.Text := 'Select * From Pic';
AdoQuery1.Open;
end;procedure TForm1.Button4Click(Sender: TObject);
//图片清除
begin
AdoQuery1.Edit;
TBlobField(AdoQuery1.FieldByName('Pic')).Clear;
AdoQuery1.Post;
ShowMessage('清除成功');
end;end.