程序运行没有问题,可以打开图片,在保存的时候显示保存到数据库(access)中了,但是打开数据库什么也没有,这是怎么回事情?更不能从数据库中再次读取了?tp表(ID(自动),编号,名称,日期。)代码如下:
unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtDlgs, DB, jpeg,ADODB, ExtCtrls, DBCtrls, Grids, DBGrids, StdCtrls;type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
Edit1: TEdit;
DataSource1: TDataSource;
DBGrid1: TDBGrid;
DBNavigator1: TDBNavigator;
DBImage1: TDBImage;
Image1: TImage;
ADOTable1: TADOTable;
OpenPictureDialog1: TOpenPictureDialog;
SavePictureDialog1: TSavePictureDialog;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
begin
openpicturedialog1.Execute ;
image1.Picture.LoadFromFile(openpicturedialog1.FileName);end;procedure TForm1.Button2Click(Sender: TObject);
begin
adotable1.Insert;
adotable1.FieldByName('编号').AsString:=edit1.Text ;
adotable1.FieldByName('名称').AsString :=openpicturedialog1.FileName ;
adotable1.FieldByName('名称').Assign(image1.Picture);
adotable1.Post;end;end.
unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtDlgs, DB, jpeg,ADODB, ExtCtrls, DBCtrls, Grids, DBGrids, StdCtrls;type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
Edit1: TEdit;
DataSource1: TDataSource;
DBGrid1: TDBGrid;
DBNavigator1: TDBNavigator;
DBImage1: TDBImage;
Image1: TImage;
ADOTable1: TADOTable;
OpenPictureDialog1: TOpenPictureDialog;
SavePictureDialog1: TSavePictureDialog;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
begin
openpicturedialog1.Execute ;
image1.Picture.LoadFromFile(openpicturedialog1.FileName);end;procedure TForm1.Button2Click(Sender: TObject);
begin
adotable1.Insert;
adotable1.FieldByName('编号').AsString:=edit1.Text ;
adotable1.FieldByName('名称').AsString :=openpicturedialog1.FileName ;
adotable1.FieldByName('名称').Assign(image1.Picture);
adotable1.Post;end;end.
adotable1.FieldByName('名称').Assign(image1.Picture);//这里出错
var
ADOData : TADOBlobStream;
JPGImg : TJPEGImage;
begin
ImagePhoto.Picture.Bitmap := nil; if not Field.IsNull then
begin
ADOData := TADOBlobStream.Create(TBlobField(Field),bmRead); JPGImg := TJPEGImage.Create;
try
JPGImg.LoadFromStream(ADOData);
ImagePhoto.Picture.Assign(JPGImg);
finally
ADOData.Free;
JPGImg.Free;
end; end;
end;procedure TfrmDataInput.ImageToDataBase(Field: TField);
var
JPGImg : TJPEGImage;
ADOData : TADOBlobStream;
begin
if not Assigned(ImagePhoto.Picture) then Exit;
JPGImg := TJPEGImage.Create;
ADOData := TADOBlobStream.Create(TBlobField(Field), bmWrite);
try
try
JPGImg.Assign(ImagePhoto.Picture);
JpgImg.SaveToStream(ADOData);
except end;
finally
JPgImg.Free;
ADOData.Free;
end;
end;读取:
DataBaseToImage(FieldByName('Photo'));保存:
ImageToDataBase(FieldByName('Photo'));