I'm running a sample from a book that uses a servlet to connect to MySQL, the relevant code is:
Even if I try a simple SQL statement like SELECT * FROM User; I get the error message
SQL result:
Error executing the SQL statement:
No suitable driver found for jdbc:mysql://localhost:3306/murach
I am using a type 4 connection. According to the book all you need to do is download the Connector/J from MySQL (mysql-connector-java-5.0.8-bin.jar)
put it into the jdk/jre/lib/ext directory and the connector will be available to any app (in java 1.6 and up) and will be loaded automatically. I even added the jar
file to the project, but that had the same result.
According to the book all you need to do is download the Connector/J from MySQL (mysql-connector-java-5.0.8-bin.jar)
put it into the jdk/jre/lib/ext directory
Not really recommended. You'd better put the jar in your WEB-INF/lib directory.
OK, this part is servlet related: if you are eventually going to use container-managed connection pooling (recommended) with Tomcat, the driver jar needs to be in Tomcat's lib folder.
I did try Class.forName("com.mysql.jdbc.Driver"); and it started working. I think this initiates the driver instead of loading it? Anyway, I will also try putting it int Tomcats lib folder.
jason cooper wrote:Before you get a Connection, you need to load the Driver class.Try this:
Class.forName("com.mysql.jdbc.Driver");
This is no longer needed, since JDBC 4.0 (Java 6). Just include Connector/J jar file to classpath and the driver manager will load the suitable driver automatically.
I did read that in java 6+ all you need to do is put the Connector/J jar in the classpath and it loads automatically. I did so (in NetBeans) but this didn't work. Using the forName() worked, I still need to try putting it in Tomcat's WEB-INF/lib directory. I guess my question to you is does the forName() call load the Driver or just initialize it? I read it initializes it which would mean it is being loaded automatically.
I tried putting the Connector/J jar file in the jdk/jre/lib/ext, in the library path of my project and in Tomcat's WEB-INF/lib directory. None of these worked. I still needed the Class.forName("com.mysql.jdbc.Driver"); statement for the app to work. It should load by itself, I don't understand why it isn't. I read somewhere that the Class.forName("..."); initializes a class, could it
be that it's loading but not initializing?
Anyway, I'll have to keep it in for now until I find the answer. By the way, I'm running on Windows 7 32 bit Pro. under bootcamp on a MacBook pro. Don't see where that should matter.
Post by:autobot
I've got no option but to sell you all for scientific experiments. Or a tiny ad:
a bit of art, as a gift, that will fit in a stocking