您的位置:首页 > 数据库

Sqlite数据库图片存取

2013-12-26 22:29 337 查看
本例只涉及jpeg图片的存取

unit Unit1;

interface

uses

  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

  Dialogs, DBGridEhGrouping, ExtDlgs, DB, ASGSQLite3, ExtCtrls, StdCtrls,

  GridsEh, DBGridEh,jpeg;

type

  TForm1 = class(TForm)

    Panel1: TPanel;

    Panel2: TPanel;

    DBGridEh1: TDBGridEh;

    Button1: TButton;

    Label1: TLabel;

    Edit1: TEdit;

    Label2: TLabel;

    Image1: TImage;

    Label3: TLabel;

    Image2: TImage;

    SQLite3DB1: TASQLite3DB;

    SQLite3Query1: TASQLite3Query;

    DataSource1: TDataSource;

    OpenPictureDialog1: TOpenPictureDialog;

    SQLite3Table1: TASQLite3Table;

    Button2: TButton;

    Button3: TButton;

    Button4: TButton;

    procedure FormCreate(Sender: TObject);

    procedure Button1Click(Sender: TObject);

    procedure Button2Click(Sender: TObject);

    procedure Button3Click(Sender: TObject);

  private

    { Private declarations }

  public

    { Public declarations }

  end;

var

  Form1: TForm1;

  i:Integer=0;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);

begin

  SQLite3DB1.DefaultDir:=ExtractFilePath(ParamStr(0));

  SQLite3DB1.Database:='test.db';

  SQLite3DB1.Open;

  SQLite3Query1.Connection:=SQLite3DB1;

  with SQLite3Query1 do

  begin

    Close;

    SQL.Clear;

    SQL.Add('select id, text from tab');

    Open;

  end;

  DataSource1.DataSet:=SQLite3Query1;

  DBGridEh1.DataSource:=DataSource1;

end;

procedure TForm1.Button1Click(Sender: TObject);

begin

  OpenPictureDialog1.Filter:='Jpeg文件(*.jpeg;*.jpg)|*.jpg;*.jpeg ';

  OpenPictureDialog1.DefaultExt:='.jpg';

  OpenPictureDialog1.FilterIndex:=1;

  Image1.Stretch:=True;

   if OpenPictureDialog1.Execute then

   begin

    Image1.Picture.LoadFromFile(OpenPictureDialog1.FileName);

   end;

   Edit1.Text:=OpenPictureDialog1.FileName;

end;

procedure TForm1.Button2Click(Sender: TObject);

var

  stm:TMemoryStream;

begin

  if( Edit1.Text='') or (Image1.Picture.Graphic =nil) then

  begin

    ShowMessage('增加的内容不全,不能增加记录,请确定你要增加的项目');

    Exit;

  end

  else

  begin

     stm:=TMemoryStream.Create;

     stm.LoadFromFile(Edit1.Text);

    with SQLite3Query1 do

    begin

     Close;

     SQL.Clear;

     SQL.Add('insert into tab(text,img) values(:a,:b)');

     Params.ParamByName('a').AsString:=Edit1.Text;

     Params.ParamByName('b').LoadFromStream(stm,ftBlob);

     ExecSQL;

     Close;

     SQL.Clear;

     SQL.Add('select id,text,img from tab');

     Open;

    end;

  end;

end;

procedure TForm1.Button3Click(Sender: TObject);

 var

   imgstm:TMemoryStream;

   jpg:TJPEGImage;

  // i:Integer;

begin

  // i:=0;

  with SQLite3Query1 do

  begin

    Close;

    SQL.Clear;

    SQL.Add('select text,img from tab');

    Open;

  end;

  SQLite3Query1.First;

  if i<=SQLite3Query1.RecordCount then

  begin

    SQLite3Query1.MoveBy(i); //移动记录指针

    inc(i);

    imgstm:=TMemoryStream.Create;

    Edit1.Text:=SQLite3Query1.FieldByName('text').AsString;

     TBlobField( SQLite3Query1.FieldByName('img')).SaveToStream(imgstm);

     imgstm.Position:=0;

     jpg:=TJPEGImage.Create;

     jpg.LoadFromStream(imgstm);

     Image2.Picture.Graphic:=jpg;

     Image1.Picture:=Image2.Picture;

     imgstm.Free;

     jpg.Free;

  end

  else

  begin

    ShowMessage('已到最后记录'+#10#13+'共有'+inttostr( SQLite3Query1.recordcount)+'条记录');

  end;

  

end;

end.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息