2014年09月16日

SQLite3 の インストール


1. http://www.sqlite.org/ よりダウンロード。
0001.png
2. プラットフォームを選択。
0002.png

タグ:SQLite
posted by a23 at 09:04| Comment(0) | 06. SQLite

2014年10月06日

Delphi XE6 FireDAC Connection SQLite3 (32bit) Local

1.GroupBox1に
    LabeledEdit1.Caption  [Server]
    LabeledEdit2.Caption  [Database]
    LabeledEdit3.Caption  [user]
    LabeledEdit4.Caption  [Password]
    LabeledEdit5.Caption  [ServerCharSet]
    LabeledEdit6.Caption  [VendorLib]   

FireDACコンポーネント
  FDConnection1
  FDPhysSQLiteDriverLink1
  FDGUIxWaitCursor1
  FDQuery1

SpeedButton1 →接続
SpeedButton2 →Create Table
SpeedButton3 →Drop Table
SL001.png
2.  FDConnection1→DriverName→SQLite
SL002.png
3.  FDQuery1→Connection→FDConnection1
SL003.png
4.  Server / user / Passwordは未使用。
  接続ボタンを押しても、何も起こりません。(エラーも表示されません)
SL004.png
5. Debugフォルダに移動。
SL005.png
6.  dllを、配置
sqlite3.dll
SL006.png
7. 接続ボタンを押して、接続成功。
SL007.png
8. 接続に成功すると、testdb.s3dbが作成されます。(他のRDBMSのように、あらかじめインストール/データベース作成と要った手順がありません)

SL008.png
9.
SL009.png



//------------------------------------------------------------------------------
//Delphi XE6 FireDAC Connection
//SQLite3
//------------------------------------------------------------------------------
unit FD_Con_SQLite3_Unit;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.Buttons, Vcl.ExtCtrls, Vcl.StdCtrls,
  FireDAC.Stan.Intf, FireDAC.Stan.Option, FireDAC.Stan.Error, FireDAC.UI.Intf,
  FireDAC.Phys.Intf, FireDAC.Stan.Def, FireDAC.Stan.Pool, FireDAC.Stan.Async,
  FireDAC.Phys, FireDAC.Phys.SQLite, FireDAC.Stan.ExprFuncs, FireDAC.Stan.Param,
  FireDAC.DatS, FireDAC.DApt.Intf, FireDAC.DApt, FireDAC.VCLUI.Wait,
  FireDAC.Comp.UI, Data.DB, FireDAC.Comp.DataSet, FireDAC.Comp.Client;

type
  TForm1 = class(TForm)
    GroupBox4: TGroupBox;
    Label7: TLabel;
    LabeledEdit1: TLabeledEdit;
    LabeledEdit2: TLabeledEdit;
    LabeledEdit3: TLabeledEdit;
    LabeledEdit4: TLabeledEdit;
    LabeledEdit6: TLabeledEdit;
    ComboBox1: TComboBox;
    Panel1: TPanel;
    SpeedButton1: TSpeedButton;
    SpeedButton2: TSpeedButton;
    Label1: TLabel;
    SpeedButton3: TSpeedButton;
    FDConnection1: TFDConnection;
    FDPhysSQLiteDriverLink1: TFDPhysSQLiteDriverLink;
    FDQuery1: TFDQuery;
    FDGUIxWaitCursor1: TFDGUIxWaitCursor;
    procedure SpeedButton1Click(Sender: TObject);
    procedure SpeedButton2Click(Sender: TObject);
    procedure SpeedButton3Click(Sender: TObject);
  private
    { Private 宣言 }
  public
    { Public 宣言 }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.SpeedButton1Click(Sender: TObject);
begin
  FDConnection1.Params.Values['Database'] := GetCurrentDir+'\'+LabeledEdit2.Text; // 'sq3_sales.s3db');   //System.IOUtils
  FDConnection1.Params.Values['OpenMode']:=ComboBox1.Text;

  FDConnection1.Connected:=True;
  if FDConnection1.Connected=True  then Label1.Caption:='Connection Successful '
  else                                  Label1.Caption:='Not connected';
end;

procedure TForm1.SpeedButton2Click(Sender: TObject);
var
  sqlstmt:string;
begin
  sqlstmt:='CREATE TABLE TEST_TBL '+
  '('+
  'TS_NO      INTEGER  not null,'+
  'TS_NAME    VARChar(30) ,'+
  'TS_QTY     DECIMAL(14,2) Default 0 ,'+
  'TS_BLOB    BLOB ,'+
  'primary key(TS_NO)'+
  ')';
  if FDConnection1.Connected=true then
  begin
    try
      FDQuery1.SQL.Clear;
      FDQuery1.SQL.Add(sqlstmt);
      FDQuery1.ExecSQL();
      ShowMessage('CREATE TABLE');
    except
      on E: EFDDBEngineException do
      ShowMessage(E.ClassName+' error raised, with message : '+E.Message);
    end;
  end
  else ShowMessage('Connected ERR');
end;

procedure TForm1.SpeedButton3Click(Sender: TObject);
var
  sqlstmt:string;
begin
  sqlstmt:='DROP TABLE TEST_TBL ';
  if FDConnection1.Connected=true then
  begin
    try
      FDQuery1.SQL.Clear;
      FDQuery1.SQL.Add(sqlstmt);
      FDQuery1.ExecSQL();
      ShowMessage('DROP TABLE');
    except
      on E: EFDDBEngineException do
      ShowMessage(E.ClassName+' error raised, with message : '+E.Message);
    end;
  end
  else ShowMessage('Connected ERR');
end;

end.






posted by a23 at 15:10| Comment(0) | 06. SQLite

2015年08月07日

SQLite3 暗号化

Delphi XE8 + SQLite3 で、FireDACによる、暗号化のサンプル

まず、Win32で、実行

1.   (1.Normal connect 接続) 
データベース名 SQ3_POST_11.S3DB は変更可能です。

0001.png
2. マイドキュメントに、データベースが作成されます。
0002.png
3.  (4.Create Table  テーブル作成)
0003.png
4.  (6.Encrypt On   データベース暗号化)
0004.png
5. この処理は、SKIPしてもらっても、OKです。
 必要であれば
 (9.CSV import(ある程度データを入力する場合にご使用ください) 付属の27OSAKA.CSVに100件程度データがあります)

0005.png
6.   (3.Form Close) でいったん終了します。
0006.png
7.再度、起動して、(1.Normal connect 接続)すると、
[FireDAC][Phys][SQLite] ERROR: file is encrypted or is not a database
のエラーがでれば、暗号化はOK。
0007.png
8.  (2.Encrypt connect 暗号化接続)
0008.png
9.  (8.Selectで動作確認)
0009.png
10.  (7.Encrypt Off で暗号化解除)
0010.png
11.  (3.Form Close) でいったん終了します。
0011.png
12. 再度、起動して、  (2.Encrypt connect 暗号化接続)
[FireDAC][Phys][SQLite] ERROR: Cipher: DB is not encrypted
がでれば、暗号化解除OK。
0012.png
13.  (3.Form Close) でいったん終了します。
0013.png
14.  (1.Normal connect 接続)
0014.png

上記以外、いろいろ、お試しいただければと思います。
サンプルプログラムのダウンロードは、こちらから、39_POSTAL_CSV.zip


15. sqlitebrowserで、暗号化された、データベースをオープンする。
0015.png
16.
0016.png
17. エラーとなります。
0017.png

ここから、Andoroid 4.4.3 (Nexus7)で、実行
1.
Screenshot_2015-08-04-13-53-09.png
2.
Screenshot_2015-08-07-18-13-11.png
3.
Screenshot_2015-08-07-18-13-20.png
4.
Screenshot_2015-08-07-18-13-25.png
5.
Screenshot_2015-08-07-18-13-25.png
6.
Screenshot_2015-08-07-18-13-34.png
7.
Screenshot_2015-08-07-18-24-12.png
8.
Screenshot_2015-08-07-18-24-26.png
9.
Screenshot_2015-08-07-18-24-44.png
10.
Screenshot_2015-08-07-18-24-50.png
11.
Screenshot_2015-08-07-18-25-00.png














posted by a23 at 17:53| Comment(0) | 06. SQLite