Re: O/T: Class.forName(driver) repeatedly? [Was: JDBC parameter binding not working for PL/PGSQL block JDBC3 Version 9.0-801]

Поиск
Список
Период
Сортировка
От Lew
Тема Re: O/T: Class.forName(driver) repeatedly? [Was: JDBC parameter binding not working for PL/PGSQL block JDBC3 Version 9.0-801]
Дата
Msg-id ipa2ds$p4b$1@news.albasani.net
обсуждение исходный текст
Ответ на JDBC parameter binding not working for PL/PGSQL block JDBC3 Version 9.0-801  (Brady S Edwards <brady.s.edwards@seagate.com>)
Ответы Re: O/T: Class.forName(driver) repeatedly? [Was: JDBC parameter binding not working for PL/PGSQL block JDBC3 Version 9.0-801]  (Brady S Edwards <brady.s.edwards@seagate.com>)
Список pgsql-jdbc
Brady S Edwards wrote:
>         try {
>             System.out.println("Trying to connect");
>             Class.forName ("org.postgresql.Driver");
>             Properties props = new Properties();
>             props.setProperty("user", PG_USER);
>             props.setProperty("password", PG_PASS);
>                 Connection pgConn = DriverManager.getConnection(PG_CONN_PROP, props);
>             System.out.println("Looks like connections succeeded\n");
>             PreparedStatement pStmt = pgConn.prepareStatement(
>                 "INSERT INTO soo (zoo) values (?)");

This code makes me do a doubletake, and not just because of the ridiculously
wide TAB-based indentation.  Why reload the driver class over and over again?
  Only the first time does anything.

One might wish to take the Sun/Oracle advice:
"The DriverManager methods getConnection and getDrivers have been enhanced to
support the Java Standard Edition Service Provider mechanism. JDBC 4.0 Drivers
must include the file META-INF/services/java.sql.Driver. This file contains
the name of the JDBC drivers implementation of java.sql.Driver. For example,
to load the my.sql.Driver class, the META-INF/services/java.sql.Driver file
would contain the entry:

  my.sql.Driver

  [org.postgresql.Driver]

"Applications no longer need to explictly load JDBC drivers using
Class.forName(). Existing programs which currently load JDBC drivers using
Class.forName() will continue to work without modification."

You still don't need 'Class.forName()' more than once per driver if you stick
to the old way.

Personally I prefer JNDI-based approaches to loading DB drivers.  I also
usually prefer JPA to raw JDBC, but there are times when JDBC is
unquestionably the better tool.

--
Lew
Honi soit qui mal y pense.
http://upload.wikimedia.org/wikipedia/commons/c/cf/Friz.jpg

В списке pgsql-jdbc по дате отправления:

Предыдущее
От: Oliver Jowett
Дата:
Сообщение: Re: JDBC parameter binding not working for PL/PGSQL block JDBC3 Version 9.0-801
Следующее
От: Brady S Edwards
Дата:
Сообщение: Re: O/T: Class.forName(driver) repeatedly? [Was: JDBC parameter binding not working for PL/PGSQL block JDBC3 Version 9.0-801]