Sqlite数据库图片存取

来源:互联网 发布:centos 限制访问ip 编辑:程序博客网 时间:2024/05/17 01:39

本例只涉及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.

0 0
原创粉丝点击