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.
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.
相关文章推荐
- SQLite数据库中存取图片文件
- ImageView中的图片怎么在SQLite数据库中存取.txt
- Android-sqlite数据库存取图片信息
- Android-sqlite数据库存取图片信息
- 使用SQLite数据库存取mp3和图片等二进制数据
- SQLite数据库的使用(图片在数据库中的存取)
- NET在SQL Server中的图片存取技术(例子在管理里InOutImg)
- C#+SQL Server图片存取
- iOS开发15-iOS SQLite存取图片、视频、音频
- PHP 图片的二进制存取 (Mysql)
- C#+SQL Server图片存取
- VB6之在MDB数据库中存取图片
- C# SQLiteHelper类似SqlHelper类实现存取Sqlite数据库
- 数据库存取图片
- sqlce 里存取图片
- ASP.NET中存取图片到数据库的示例
- ASP.NET中存取图片到数据库的示例
- (转)C#数据库存取图片
- iPhone中沙盒的作用以及存取沙盒中的文件(图片)
- C# SQLiteHelper类似SqlHelper类实现存取Sqlite数据库