C言語用ライブラリの利用方法について説明します。
開発、および実行するアーキテクチャのFujitsu Enterprise Postgres Clientパッケージをインストールしてください。
参照
C言語ライブラリを利用する場合の環境設定、および通信データの暗号化方法について説明します。
libpqを使用するアプリケーションを実行するためには、以下のように環境変数を設定してください。
アプリケーション実行時に必要
PGLOCALEDIR
<Fujitsu Enterprise Postgres クライアント機能のインストールディレクトリ>/share/locale
例
“<x>”は製品のバージョンを示します。
> PGLOCALEDIR=/opt/fsepv<x>client64/share/locale;export PGLOCALEDIR
コンパイル/リンク時に必要
LIB
<Fujitsu Enterprise Postgres クライアント機能のインストールディレクトリ>\lib
INCLUDE
<Fujitsu Enterprise Postgres クライアント機能のインストールディレクトリ>\include
アプリケーション実行時に必要
PATH
<Fujitsu Enterprise Postgres クライアント機能のインストールディレクトリ>\lib
PGLOCALEDIR
<Fujitsu Enterprise Postgres クライアント機能のインストールディレクトリ>\share\locale
例
64ビットのオペレーティングシステムに、64ビットのクライアントパッケージをインストールしている場合の例です。
なお、“<x>”は製品のバージョンを示します。
> SET PATH=%ProgramFiles%\Fujitsu\fsepv<x>client64\lib;%PATH% > SET LIB=%ProgramFiles%\Fujitsu\fsepv<x>client64\lib;%LIB% > SET INCLUDE=%ProgramFiles%\Fujitsu\fsepv<x>client64\include;%INCLUDE% > SET PGLOCALEDIR=%ProgramFiles%\Fujitsu\fsepv<x>client64\share\locale
アプリケーション実行環境の言語の設定、およびアプリケーションが使用する符号化方式の設定について説明します。
アプリケーション実行環境の言語設定は、データベースサーバのメッセージロケールの設定と合わせる必要があります。
アプリケーションが出力するメッセージの中には、アプリケーション側のメッセージに、データベースサーバから送られたメッセージを埋め込む場合があります。このとき、アプリケーション側のメッセージは、アプリケーション側のメッセージロケールに従い、データベースサーバから送られるメッセージは、データベースサーバ側のメッセージロケールに従います。そのため、両方のメッセージロケールが一致していない場合には、言語や符号化方式が混在します。符号化方式が一致しない場合には、文字化けが発生します。
Linuxの場合
プロセスのロケールのLC_MESSAGESカテゴリが、データベースサーバのメッセージロケールと一致するように設定してください。環境変数を用いるなどいくつかの方法があります。詳細は、setlocale関数のオペレーティングシステムに付属するドキュメントを参照してください。
例
setlocale関数で“ja_JP.UTF-8”の指定例
setlocale(LC_ALL,"ja_JP.UTF-8");
LC_ALLに指定することにより、LC_MESSAGEカテゴリに設定を適用しています。
Windows(R)の場合
OSのロケールをデータベースサーバのメッセージロケールの設定と合わせてください。
アプリケーションに埋め込まれ、データベースに渡される符号化方式と、実行時のクライアント符号化方式の設定は同じにしてください。データベースサーバ側で正しく符号化方式を変換できなくなります。
アプリケーションの符号化方式は、以下のいずれかの方法で設定してください。
実行時の環境変数PGCLIENTENCODINGに設定する。
接続文字列のclient_encodingキーワードに設定する。
PQsetClientEncoding関数を使って設定する。
参照
設定できる符号化方式を表す文字列は、“PostgreSQL Documentation”の“Server Administration”の“Supported Character Sets”を参照してください。
例えば、Unicode、8ビットの場合は、“UTF8”という文字列を設定します。
ポイント
コマンドプロンプトに結果を出力する際、文字化けする場合があります。文字化けした場合は、コマンドプロンプトのフォントの設定を見直してください。
通信データの暗号化機能を利用してリモートアクセスを行う場合は、以下のいずれかの方法で設定してください。
環境変数PGSSLMODEに「require」、「verify-ca」、「verify-full」のいずれかを指定してください。
さらに、データベースサーバの成りすましを防御するためには、環境変数PGSSLROOTCERTおよびPGSSLCRLの各パラメータの設定が必要です。
参照
環境変数の詳細については、“PostgreSQL Documentation”の“Client Interfaces”の“Environment Variables”を参照してください。
接続URIの“sslmode”パラメータに「require」、「verify-ca」、「verify-full」のいずれかを指定してください。
さらに、データベースサーバの成りすましから防御するためには、“sslcert”、“sslkey”、“sslrootcert”、“sslcrl”の各パラメータの設定も必要です。
参照
通信データの暗号化についての詳細は、“PostgreSQL Documentation”の“Server Administration”の“Secure TCP/IP Connections with SSL”を参照してください。
ポイント
接続サービスファイルを用いて接続先を指定することを推奨します。接続サービスファイルには、接続先情報やコネクションに対して設定する各種のチューニング情報を1セットとして名前(サービス名)を定義します。データベース接続時には、接続サービスファイルに定義されたサービス名を用いることで、接続情報の変更によるアプリケーションの修正が不要になります。
“PostgreSQL Documentation”の“Client Interfaces”の“The Connection Service File”を参照してください。
参照
“PostgreSQL Documentation”の“Client Interfaces”の“Database Connection Control Functions”を参照してください。