db-derby-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Piet Blok" <pbh...@wanadoo.nl>
Subject Client driver fails to provide all DriverPropertyInfo's
Date Sat, 27 Aug 2005 10:16:28 GMT
Hi,

The Client Driver, in contrast to Embedded Driver, fails to report all DriverPropertyInfo's.
It seems that it not only ignores the Properties object (see Jira DERBY_530), but it also
ignores connection attributes appended to the connection url.

If no one objects I will create a Jira issue.

See below a piece of code that demonstrates this behaviour:

Piet Blok



import java.sql.Connection;
import java.sql.Driver;
import java.sql.DriverManager;
import java.sql.DriverPropertyInfo;
import java.sql.SQLException;
import java.util.Enumeration;
import java.util.Properties;

import org.apache.derby.jdbc.ClientDriver;
import org.apache.derby.jdbc.EmbeddedDriver;

public class DerbyConnector {

    private static final String DERBY_CONNECTION_PREFIX = "jdbc:derby:";

    private static final String MY_DATABASE = "MyDatabase";

    private static final String MY_HOST = "//127.0.0.1:1527/";

    static {
        new ClientDriver();
        new EmbeddedDriver();
    }

    public static void main(String[] args) {
        DerbyConnector connector = new DerbyConnector();
        try {
            Properties connectionProperties = new Properties();
            connectionProperties.setProperty("create", "true");
            connectionProperties.setProperty("dataEncryption", "true");
            connector.printInfo(MY_HOST + MY_DATABASE, connectionProperties);
            connector.printInfo(MY_DATABASE, connectionProperties);
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

    public Connection connect(String url) throws SQLException {
        return DriverManager.getConnection(DERBY_CONNECTION_PREFIX + url);
    }

    public Connection connect(String url, Properties connectionProperties)
            throws SQLException {
        return connect(DERBY_CONNECTION_PREFIX + url
                + connectionPropertiesString(connectionProperties));
    }

    public DriverPropertyInfo[] getPropertyInfos(String url, Properties props)
            throws SQLException {
        String connectionString = DERBY_CONNECTION_PREFIX + url
                + connectionPropertiesString(props);
        System.out.println("ConnectionString = " + connectionString);
        Driver driver = DriverManager.getDriver(connectionString);
        return driver.getPropertyInfo(connectionString, props);
    }

    private String connectionPropertiesString(Properties connectionProperties) {
        StringBuffer sb = new StringBuffer();
        for (Enumeration enumeration = connectionProperties.propertyNames(); enumeration
                .hasMoreElements();) {
            String key = (String) enumeration.nextElement();
            sb.append(';');
            sb.append(key);
            sb.append('=');
            sb.append(connectionProperties.getProperty(key));
        }
        return sb.toString();

    }
    
    private void printInfo(String url, Properties connectionProperties)
            throws SQLException {
        System.out.println("========= " + url + " =========");
        DriverPropertyInfo[] infos = getPropertyInfos(url, connectionProperties);
        for (int i = 0; i < infos.length; i++) {
            System.out.println("DriverPropertyInfo " + i);
            System.out.println("  description: " + infos[i].description);
            System.out.println("  " + infos[i].name + " = " + infos[i].value);
            System.out.println("  required = " + infos[i].required);
            if (infos[i].choices != null) {
                for (int j = 0; j < infos[i].choices.length; j++) {
                    System.out.println("    choice " + j + ": "
                            + infos[i].choices[j]);
                }
            }
        }
    }

}

Mime
View raw message