2014年10月03日

Delphi XE6 FireDAC Connection PostgreSQL9.3 (64bit)

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

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

SpeedButton1 →接続
SpeedButton2 →Create Table
SpeedButton3 →Drop Table

 FDConnection1→DriverName→PG
pg001.png
2.  FDQuery1→Connection→FDConnection1
pg002.png
3. 接続ボタンを押す。
pg003.png
4. エラー
[FireDAC][Phys][PG]-314.ベンダライブラリ[libpq.dll]を読み込めません。指定されたファイルが見つかりません。
ヒント:PATHまたはアプリケーションのEXEディレクトリら含まれているか、x86ビットであるかを確認してください。
pg004.png
5. Debug
pg005.png
6.  dllを、配置
libeay32.dll
libiconv-2.dll
libintl.dll
libintl-8.dll
libpq.dll
ssleay32.dll
pg006.png
7. 接続
pg007.png
8. BLOBは、BYTEAに。
pg008_err.png
9.
pg009.png


//------------------------------------------------------------------------------
//Delphi XE6 FireDAC Connection
//PostgreSQL9.3
//------------------------------------------------------------------------------
unit FD_Con_PgSQL93_Unit;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, 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.PG,
  FireDAC.VCLUI.Wait, FireDAC.Stan.Param, FireDAC.DatS, FireDAC.DApt.Intf,
  FireDAC.DApt, Vcl.StdCtrls, Vcl.Buttons, Vcl.ExtCtrls, Data.DB,
  FireDAC.Comp.DataSet, FireDAC.Comp.Client, FireDAC.Comp.UI;

type
  TForm1 = class(TForm)
    GroupBox1: TGroupBox;
    LabeledEdit1: TLabeledEdit;
    LabeledEdit2: TLabeledEdit;
    LabeledEdit3: TLabeledEdit;
    LabeledEdit4: TLabeledEdit;
    LabeledEdit5: TLabeledEdit;
    LabeledEdit6: TLabeledEdit;
    FDConnection1: TFDConnection;
    FDPhysPgDriverLink1: TFDPhysPgDriverLink;
    FDGUIxWaitCursor1: TFDGUIxWaitCursor;
    FDQuery1: TFDQuery;
    Panel1: TPanel;
    SpeedButton1: TSpeedButton;
    SpeedButton2: TSpeedButton;
    Label1: TLabel;
    SpeedButton3: TSpeedButton;
    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['Server']     :=LabeledEdit1.Text;
  FDConnection1.Params.Values['Database']   :=LabeledEdit2.Text;
  FDConnection1.Params.Values['User_Name']  :=LabeledEdit3.Text;
  FDConnection1.Params.Values['Password']   :=LabeledEdit4.Text;
  FDConnection1.Params.Values['CharacterSet']:=LabeledEdit5.Text;
  FDPhysPgDriverLink1.VendorLib    :=LabeledEdit6.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 ,'+
  'TSBLOB     BYTEA ,'+
  '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 13:46| Comment(0) | 03. PostgreSQL
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント: