我的学习生涯(Delphi篇) - 21

本文介绍了如何在数据库中存储图片的方法,通过使用ADO连接、数据集和内存流,实现图片的读取、存储和查询。

    我们平常要和图片打交道,那么我们如何把图片存在数据库中呢?

    -------------------------------------------------------------------------------------------------美丽分割线---------------------------

   年代:2007

   文件:My0919.7z


   程序运行效果如下图:

   

   


   单元文件:

   Unit1.pas

 

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, DB, ADODB, StdCtrls, ExtCtrls, ExtDlgs, LoadSaveImg, DBCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    ADOConnection1: TADOConnection;
    ADODataSet1: TADODataSet;
    OpenPictureDialog1: TOpenPictureDialog;
    Button3: TButton;
    ADODataSet1car_number: TStringField;
    ADODataSet1pic1: TBlobField;
    DataSource1: TDataSource;
    DBNavigator1: TDBNavigator;
    Image1: TImage;
    DBMemo1: TDBMemo;
    procedure Button1Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
    TS: TMemoryStream;
    LSI: TLSImg;
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
  FName, FType: string;
begin
  OpenPictureDialog1.Filter := GraphicFilter(TGraphic);
  if OpenPictureDialog1.Execute then
  begin
    FName := OpenPictureDialog1.Files.Strings[0];
    FType := Copy(FName, LastDelimiter(' .', FName) + 1, Length(Fname) - LastDelimiter(' .', Fname));
    LSI := TLSImg.Create;
    if LSI.GetImgType(FType) <> 0 then
    begin
      TS := TMemoryStream.Create;
      LSI.Picture.Graphic.LoadFromFile(FName);
      LSI.SaveToStream(TS);
      with ADODataSet1 do
      begin
        try
          Append;
          (Fields[1] as TBlobField).LoadFromStream(TS);
          Post;
        except
          raise
        end;
      end;
      TS.Free;
    end;
    LSI.Free;
  end;
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
  //
  ADOConnection1.Close;
  ADOConnection1.Open;

  Application.MessageBox('connection success!','hint',0);
  //
  ADODataSet1.Close;
  ADODataSet1.CommandText:='select car_number,pic1 from totalTable';
  ADODataSet1.Open;

  Application.MessageBox('query success!','hint',0);
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  with ADODataSet1 do
  begin
    if not Eof then
    begin
      LSI := TLSImg.Create;
      TS := TMemoryStream.Create;
      (Fields[1] as TBlobField).SaveToStream(TS);
      LSI.LoadFromStream(TS);
      Image1.Picture := LSI.Picture;
      TS.Free;
      LSI.Free;
    end;
  end;
end;

end.

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值