• Post Reply
  • Bookmark Topic Watch Topic
  • New Topic

Database connection servlet

 
Mike Tabak
Ranch Hand
Posts: 71
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
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.

Anyone have any answers?
Thanks in advance

Mike
 
jason cooper
Greenhorn
Posts: 1
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Before you get a Connection, you need to load the Driver class.Try this:
Class.forName("com.mysql.jdbc.Driver");
 
Christophe Verré
Sheriff
Posts: 14691
16
Eclipse IDE Ubuntu VI Editor
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
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.
 
Bear Bibeault
Author and ninkuma
Marshal
Pie
Posts: 64959
86
IntelliJ IDE Java jQuery Mac Mac OS X
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
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.
 
Mike Tabak
Ranch Hand
Posts: 71
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Thanks all,

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.
 
Nam Ha Minh
Ranch Hand
Posts: 502
Eclipse IDE Firefox Browser Windows
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
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.
 
Mike Tabak
Ranch Hand
Posts: 71
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
To Jason:

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.

Thanks
Mike
 
Mike Tabak
Ranch Hand
Posts: 71
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
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.
 
It is sorta covered in the JavaRanch Style Guide.
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic