PostgreSQLにDelphiXE7で接続するには?

解決


桜坂  2016-02-26 05:17:49  No: 48005

DelphiXE7エンタープライズをWin7で最近使い始めました。
以前Delphi7を使っていました。
PostgreSQL9.5でDB、テーブルを作りCSVファイルからインポートしデータが見られる状態まで行き着きました。
そこでDBのデ−タを変更などするためDelphiXE7を使おうと接続のためODBCドライバーをWIN7のクライアントPCに入れました。
しかし、この後が出来ません。
他のサイトにはFireDACを使うと書いてあったりしますが、詳しく書いてあるサイトはありません。
PostgreSQLにDelphiXE7で接続する方法を教えてください。


igy  2016-02-26 06:35:33  No: 48006

>他のサイトにはFireDACを使うと書いてあったりしますが、詳しく書いてあるサイトはありません。

デベロッパーキャンプ・アーカイブ - カテゴリ別 
http://www.embarcadero.com/jp/developer-camp-japan/archive-by-categories
にある
>「はじめてのFireDAC」
あたりでFireDACの使い方を確認してみるのは、いかがですか?
# PDFで記載されている TADxxxx は TFDxxxxに読みかえる必要はありそうですけど。


桜坂  2016-02-26 08:46:59  No: 48007

igy様、夜遅くにも関わらずご指導ありがとうございます。

FireDACでPostgreSQL接続にはDLLが必要なようでVC++でソースからコンパイルしなければならないようです。
とても私では不可能です。
FireDAC以外でPostgreSQL接続する方法はないのでしょうか。
教えてください。


igy  2016-02-26 16:18:04  No: 48008

> FireDACでPostgreSQL接続にはDLLが必要なようでVC++でソースからコンパイルしなければならないようです。

とのことですが、

PostgreSQL への接続(FireDAC)
http://docwiki.embarcadero.com/RADStudio/XE7/ja/PostgreSQL_%E3%81%B8%E3%81%AE%E6%8E%A5%E7%B6%9A%EF%BC%88FireDAC%EF%BC%89

を見ると、

> バージョン 9.0 のクライアント ファイル一式は次のとおりです。
>     libpq.dll
>     ssleay32.dll
>     libeay32.dll
>     libintl-8.dll
>     libiconv-2.dll 
> これらのファイルは、サーバーのインストール フォルダの Bin フォルダから取得して

とあるようです。


桜坂  2016-02-26 16:29:54  No: 48009

igy様、朝早い回答ありがとうございます。
早速試してみます。 
移動中のため職場に行ってから実行します。


桜坂  2016-02-27 01:23:48  No: 48010

igy様に教えて頂いたDLLを入れました。
ただ、まだアプリができていないので無意味かと思いました。
ODBCの32bit番でodbcad32から設定しアクセス成功でした。
ここまでは成功しました。
しかし、delphiXE7のFDConnectionの接続エディタで躓いております。
ドライバIDと接続定義名の欄に設定したドライバ名などが表示されません。
なにか手順が欠けているのでしょうか。
教えて下さい。


桜坂  2016-02-27 01:50:12  No: 48011

追記です。
当方のWin7は64ビットですので64ビット版のODBCドライバも入れました。
しかし、「32ビット版を入れなければならない」というサイトがあったので両方入れました。
もちろん違う名前にしました。
皆様よろしくお願いします。


igy  2016-02-27 01:58:29  No: 48012

ODBC ではなく、

今朝、挙げた

PostgreSQL への接続(FireDAC)
http://docwiki.embarcadero.com/RADStudio/XE7/ja/PostgreSQL_%E3%81%B8%E3%81%AE%E6%8E%A5%E7%B6%9A%EF%BC%88FireDAC%EF%BC%89


  接続定義パラメータ

  使用例
に記載があるように、
DriverIDにPGを指定する方法は、いかがですか?


桜坂  2016-02-27 02:05:34  No: 48013

igy様、ありがとうございます。
まるっきり勘違いしていました。

再度やり直します。
ご指導ありがとうございます。

自宅にはdelphiXE7の環境がないので来週再度挑戦します。
重ねてお礼申し上げます。


桜坂  2016-02-29 20:17:23  No: 48014

接続テストの段階でエラーで躓いています。

FireDAC接続エディタ[FDConnection1]の内容です。
Pooled  False
Database  PGX4(仮です)
User_Name postgres
Password xxxxxxxx
Server 127.0.0.1
Port  5432
LoginTimeout  30
CharacterSet WIN1251
ExtendedMetadata  False
OidAsBlob  Yes
UnknownFormat   BYTEA
ApplicationName  ALLBooks
PGAdvanced    空欄
MetaDefSchema  AKB
MetaCurCchema 空欄

以上にしましたが次のとおりエラーでした。

[FireDAC][Phys][PG]-314,ベンダライブラリ[libpq.dll]を読み込めません。指定されたファ

イルが見つかりません。
ヒント:PATHまたはアプリケーションのEXEディレクトリに含まれているか、X86ビット

であるかを確認して下さい。

PATHはシステム環境変数とユーザーの環境変数の最後に[libpq.dll]を置いたフォルダを追

加し再起動しました。
環境変数の編集は初めてで不安です。
どこが悪いのでしょうか。教えて下さい。


igy  2016-02-29 20:48:56  No: 48015

> ヒント:PATHまたはアプリケーションのEXEディレクトリに含まれているか、X86ビット
> であるかを確認して下さい。

ちなみに、DLLは32bitのものですか?

> PATHはシステム環境変数とユーザーの環境変数の最後に[libpq.dll]を置いたフォルダを追
> 加し再起動しました。

あるいは、記載に間違いとかは、ないですか?


桜坂  2016-02-29 21:48:24  No: 48016

igy様、いつもご指導いただきありがとうございます。
私自身、DLLが引っかかっていました。
PostgreSQLは64ビットのProgramFilesにありました。
そこのDLLをコピーしてPATHを通しました。
ということは、このDLLは64ビットということなのでしょうか。

32BITのDLLはどこに在るのでしょうか。
教えて下さい。


桜坂  2016-02-29 22:30:46  No: 48017

igy様、いつもお世話様です。
同じPC(64ビットWIN7)に32ビットのpostgresqlをインストールしました。
32ビットPOSTGRESQLは停止しDLLだけアプリのフォルダにコピーしました。

でも同じエラーメッセージが出ます。
このやり方ではダメなのでしょうか。
そもそも64ビットのPOSTGRESQLはDelphiXE7ではダメなのでしょうか。
教えて下さい。


igy  2016-02-29 22:41:29  No: 48018

> DLLだけアプリのフォルダにコピーしました。

アプリのフォルダにコピーせず、

> そこのDLLをコピーしてPATHを通しました。

上記のようにしたら、どうなりますか?


通りすがり  2016-02-29 23:51:54  No: 48019

> そもそも64ビットのPOSTGRESQLはDelphiXE7ではダメなのでしょうか。

一般論ですが、RDBはサーバ側とクライアント側で32ビット版と64ビット版をそれぞれ独立して選択できます。
しかしインストーラはデフォルトでは選択したものしか入らないのが普通です。64ビット版のRDBのサーバを
インストールするとそのままではクライアントも64ビット版のものしか入らない、ということです。

一方でクライアント側はそれを使用するアプリケーションと同じものを必要とします。32ビット版の
アプリケーションであれば32ビット版のクライアントが、64ビット版のアプリケーションであれば
64ビット版のクライアントが要る、ということです。

つまりOSが64ビット版だからとRDBも64ビット版のものを入れたのであれば、32ビット版のアプリケーションを
動作させるためには追加で32ビット版のクライアントを別途インストールする必要がある、と考えてください。

# もちろんアプリケーションを64ビット版で作るのなら64ビット版のクライアントが必要です。


桜坂  2016-02-29 23:58:51  No: 48020

igy様、おかげさまで接続できました。
本当にありがとうございます。
約8年ぶりで、Delhiのサイトに戻ってきました。
懐かしさでいっぱいです。
接続できましたので、このスレッドはクローズします。
次の問題が出てしまいましたのでスレッドを変えてご指導願いたいと思います。
igy様ありがとうございます。
今後ともご指導よろしくお願いします。


桜坂  2016-03-01 04:15:37  No: 48021

通りすがりさん、投稿時が重なり、御礼を失してしまいました。
申し訳ございません。
ご指導ありがとうございました。
この質問はクローズとさせていただきます。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加