非互換
FUJITSU Enterprise Postgres 9.6では、データベースの接続を試みるDriverManagerクラスのgetConnectionメソッドにおいて、データベース名および接続引数をURLに指定する際、一部の値をそのまま指定することができなくなります。
getConnection(String url)
注) 以下のメソッドにより、url以外の引数に指定する場合は影響ありません。
getConnection(String url, Properties info)
getConnection(String url, String user, String password)
データベース名
"user"プロパティ
"password"プロパティ
その他、任意のString型の値を指定するプロパティ
%
+
getConnectionメソッドの引数であるurlに[値]を含む[接続引数]をそのまま指定することができます。
[例]
String url = "jdbc:postgresql://sv1/test?user=fsepuser &password=sec+ret"; Connection conn = DriverManager.getConnection(url);
getConnectionメソッドの引数であるurlに[値]を含む[接続引数]を指定する場合には、URLエンコードする必要があります。
[例]
String url = "jdbc:postgresql://sv1/test?user=fsepuser&password=" + URLEncoder.encode("sec+ret","UTF-8"); Connection conn = DriverManager.getConnection(url);
対処方法
以下の何れかの方法で、アプリケーションを修正してください。
接続引数の値をURLEncoderクラスのencodeメソッドによりURLエンコードする。
接続引数をPropertiesクラスのsetPropertyメソッドによりPropertiesオブジェクトに設定し、それをgetConnectionメソッドの引数に指定する。
"user"プロパティまたは"password"プロパティの場合は、getConnectionメソッドの引数に指定する。