db-derby-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Piet Blok" <pbh...@wanadoo.nl>
Subject Re: Client driver fails to provide all DriverPropertyInfo's
Date Tue, 30 Aug 2005 15:13:56 GMT
Jira issue DERBY-546 created.

Piet Blok----- Original Message ----- 
  From: Piet Blok 
  To: Derby Discussion 
  Sent: Saturday, August 27, 2005 12:16 PM
  Subject: Client driver fails to provide all DriverPropertyInfo's


  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