|
ここでは、JDBC プログラミングの重要なコンセプトに焦点を当てます。
JDBC ドライバーは、データベースの接続に URL を必要とします。Pervasive JDBC ドライバー用の URL 構文は以下のとおりです。
jdbc:pervasive://machinename:port number/datasource[;encoding=;encrypt=;encryption=]
machinename は、Pervasive PSQL サーバーを実行するマシンのホスト名または IP アドレスです。
port number は、Pervasive PSQL サーバーが受信を行うためのポートです。このポートのデフォルト値は 1583です。
datasource は、アプリケーションが使用する予定の Pervasive PSQL サーバー上の ODBC エンジン データ ソースの名前です。
encoding= は、文字エンコードです。これは指定したコード ページを介して読み込んだデータにフィルターをかけることができます。これによりデータが正しく書式設定およびソートされます。
encrypt= は、JDBC ドライバーが暗号化ネットワーク通信(ワイヤ暗号化とも呼ばれます)を使用する必要があるかどうかを決定します。
encryption= は、JDBC ドライバーが許可する暗号化の最低レベルを指定します。
メモ
JDBC アプリケーションを実行するためには、Pervasive PSQL v11 SP3 エンジンは指定したホストで実行されている必要があります。
JDBC を使用して Pervasive PSQL データベースに接続する方法を次に示します。
jdbc:pervasive://server:port/DSN[;encoding=;encrypt=;encryption=]
または
jdbc:pervasive://server:port/DSN[?pvtranslate=&encrypt=&encryption=]
引数
|
説明
|
---|---|
server
|
ID または URL を使用したサーバー名。
|
port
|
リレーショナル インターフェイスのデフォルトのポートは 1583 です。ポートが指定されない場合、このデフォルトが使用されます。
|
DSN
|
通常の ODBC メソッドを使用してサーバーで設定する DSN の名前。
|
encoding
|
文字エンコードを使用するを参照
|
encrypt
|
JDBC ドライバーが暗号化ネットワーク通信(ワイヤ暗号化とも呼ばれます)を使用する必要があるかどうかを決定します。『Advanced Operations Guide』のワイヤ暗号化を参照してください。
値:always(常時)、never(しない)
このオプションを指定しなかった場合、ドライバーにはサーバーの設定が反映されます。これは、"必要な場合" と同等です。
値 "always" を指定した場合、JDBC ドライバーは暗号化を使用します。ただし、サーバーがワイヤ暗号化を許可していない場合はエラーを返します。値 "never" を指定した場合、JDBC ドライバーは暗号化を使用しません。サーバーがワイヤ暗号化を要求した場合はエラーを返します。
JDBC ドライバーでワイヤ暗号化を使用するには、別の JAR ファイルが classpath に必要となります。この JAR ファイル jpscs.jar はデフォルトでインストールされ、Java Cryptography Extensions(JCE)を使用します。
|
encryption
|
JDBC ドライバーが許可する暗号化の最低レベルを決定します。
値:low(低)、medium(中)、high(高)
デフォルト:medium(中)
これらの値はそれぞれ 40 ビット、56 ビット、および 128 ビット暗号化に対応しています。
次の例では、JDBC ドライバーは UTF-8 エンコードを使用し、常に暗号化を要求し、最低でも "低" レベルの暗号化を必要とすることを指定しています。そうでない場合はエラー コードを返します。
jdbc:pervasive://host/demodata?encoding=UTF-8&encrypt= always&encryption=low
|
JDBC ドライバーを使用して Pervasive データベースに接続する方法を次に示します。
// Pervasive PSQL JDBC ドライバーを読み込みます。 Class.forName("com.pervasive.jdbc.v2.Driver") // Pervasive JDBC URL 構文: // jdbc:pervasive://<ホスト名または IP アドレス> : // <ポート番号(デフォルト 1583)>/<ODBC エンジン DSN> String myURL = "jdbc:pervasive://127.0.0.1:1583/ demodata"; try { // m_Connection = DriverManager.getConnection(myURL, username, password); } catch(SQLException e) { e.printStackTrace(); // その他の例外処理 }
Java は文字列にワイド文字を使用します。文字データはデータベース エンジンとやり取りするためにコード ページに変換する必要があります。文字データは、ドライバー マネージャーに渡す接続文字列の中で"encoding" 属性を使用して指定します。
encoding 属性は、文字データの変換に使用する特定のコード ページを指定します。encoding 属性をが指定されない場合は、クライアント マシンに用いられているデフォルトのオペレーティング システムのコード ページが使用されます。これはクライアントとサーバーが同じオペレーティング システムのエンコードを使用していることが前提です。
public static void main(String[] args) { // latin 2 エンコードを指定 String url = "jdbc:pervasive://MYSERVR:1583/ SWEDISH_DB;encoding=cp850"; try { Class.forName("com.pervasive.jdbc.v2.Driver"); Connection conn = DriverManager.getConnection(url); Statement stmt = conn.createStatement(); ResultSet rs = stmt.executeQuery("select * from SwedishTable"); rs.close(); stmt.close(); conn.close(); } catch(Exception e) { e.printStackTrace(); } }
1 つのデータベースに 2 つの異なるエンコードを使用したテーブルがある場合、2 つの別個の接続を確立する必要があります。データベース エンジンは 1 接続につき 1 つのエンコードしか識別しません。このため接続ごとに別個のエンコードを指定する必要があります。
Pervasive JDBC ドライバーは、コード ページのための Java ネイティブ サポートを使用します。サポートされるコード ページのリストは Sun の Web サイト java.sun.com から入手できます。
|