Re: JDBC connection to mysql problem
On Thu, 23 Sep 2010, Martin Gregorie wrote:
On Thu, 23 Sep 2010 22:09:05 +0100, Tom Anderson wrote:
That jar also contains a
META-INF/services/java.sql.Driver
Which should, i believe, be sufficient for DriverManager to load the
driver without a Class.forName call.
Is it reasonable to assume that any other JDBC driver jar file would be
similar enough to work without needing the Class.forName() call
The spectacle [1] says (my emphasis):
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
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.
If you have a JDBC4 driver, then you don't need to Class.forName it. But
you can if you like.
The interesting question is what databases have JDBC4 drivers. So far, we
know about PostgreSQL. I've just had a look at jTDS, and it doesn't have a
driver file; the website is pretty positive about it being a JDBC 3
driver, so no surprises there. Our infrastructure guy has changed the SSH
port at the office, and i don't know the new one, so i can't check the
Oracle drivers. MySQL connector/J 5.1.13 has a driver file.
tom
[1] http://download.oracle.com/javase/6/docs/api/java/sql/DriverManager.html
--
a draw was agreed once the pieces started melting