unit Unit1;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, db, sqldb, sqlite3conn, FileUtil, Forms, Controls,
Graphics, Dialogs, Buttons, DBGrids, DbCtrls, StdCtrls;
type
{ TForm1 }
TForm1 = class(TForm)
BitBtn1: TBitBtn;
Button1: TButton;
DataSource1: TDataSource;
DBGrid1: TDBGrid;
DBImage1: TDBImage;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
GroupBox1: TGroupBox;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
OpenDialog1: TOpenDialog;
SQLite3Connection1: TSQLite3Connection;
SQLQuery1: TSQLQuery;
SQLTransaction1: TSQLTransaction;
procedure BitBtn1Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ private declarations }
public
{ public declarations }
end;
var
Form1: TForm1;
rutaEXE: string;
implementation
{$R *.lfm}
{ TForm1 }
procedure TForm1.FormCreate(Sender: TObject); // start creating database if it does not exist
begin
rutaEXE:=ExtractFilePath(UTF8Encode(Application.ExeName)); // ejem C:\Users\Ericktux\Desktop\
if not FileExists(rutaEXE+'base1.db') then
begin
SQLite3Connection1.DatabaseName := 'base1.db';
SQLite3Connection1.Connected := True;
SQLTransaction1.DataBase:=SQLite3Connection1;
SQLQuery1.DataBase:=SQLite3Connection1;
SQLTransaction1.Active:= True;
SQLite3Connection1.ExecuteDirect('CREATE TABLE contacts(id INTEGER PRIMARY KEY, name VARCHAR, last_name VARCHAR, Picture BLOB)');
SQLTransaction1.Commit;
SQLQuery1.SQL.Text:='SELECT * FROM contacts';
SQLQuery1.Open;
DataSource1.DataSet:=SQLQuery1;
DBGrid1.DataSource:=DataSource1;
DBGrid1.AutoFillColumns:=true;
end
else
BEGIN
SQLite3Connection1.DatabaseName:='base1.db';
SQLite3Connection1.Connected:=true;
SQLTransaction1.DataBase:=SQLite3Connection1;
SQLQuery1.DataBase:=SQLite3Connection1;
SQLTransaction1.Active:= True;
SQLQuery1.SQL.Text:='SELECT * FROM contacts';
SQLQuery1.Open;
DataSource1.DataSet:=SQLQuery1;
DBGrid1.DataSource:=DataSource1;
DBGrid1.AutoFillColumns:=true;
end;
end;
procedure TForm1.BitBtn1Click(Sender: TObject); // add new item
begin
SQLite3Connection1.DatabaseName := 'base1.db';
SQLite3Connection1.Connected := True;
SQLQuery1.SQL.Clear;
SQLQuery1.SQL.Add('insert into contacts (name,last_name,picture) values (:name,:last_name,:picture)');
SQLQuery1.Params.paramByName('name').AsString := edit1.text;
SQLQuery1.Params.paramByName('last_name').AsString := edit2.text;
SQLQuery1.Params.paramByName('picture').LoadFromFile(Edit3.Text, ftBlob);
SQLQuery1.ExecSQL;
SQLTransAction1.Commit;
SQLQuery1.Close;
begin
SQLQuery1.Close;
SQLQuery1.SQL.text:='Select * FROM contacts';
SQLQuery1.ExecSQL;
SQLQuery1.Open;
end;
end;
procedure TForm1.Button1Click(Sender: TObject); // choose image
begin
OpenDialog1.InitialDir := ExtractFilePath(Application.ExeName)+'img';
if OpenDialog1.Execute then
begin
Edit3.Text := OpenDialog1.FileName;
end;
end;
end.