Link to home
Start Free TrialLog in
Avatar of GregMacken
GregMacken

asked on

Java file won't connect to DB

Hi, when run the follwoing java file it doesn't update the database as desired... here's the code.........

import java.io.*;
import java.text.*;
import java.sql.*;
import java.util.*;

public class work {

 public static void main (String[] args) {


Connection con = null;
   
   
      try
    {
System.out.println("tries to connect");

      Class.forName("org.gjt.mm.mysql.Driver").newInstance();
     
      System.out.println("connected");

      con = DriverManager.getConnection("jdbc:mysql://localhost/traffic");
      Statement statement = con.createStatement();
System.out.println("connected");

 statement.executeUpdate("insert into x   values   ( 'ghjgjh')");


 
      }

    catch (Exception e)
    {
    e.toString();
    }
    finally
    {
      try
      {
        if (con != null)
          con.close();  //try to close the db connection
      }
      catch (SQLException sqle)
      {
       sqle.toString();
      }
    }

}


}



I get the ouput "tires to connect" but I don't get the output "connected so obviusly it's having a problem with the connection code. Btw when I use the same code in a servlet it worls perfectly. Any idea why it won't work as a normal java file?
Avatar of CEHJ
CEHJ
Flag of United Kingdom of Great Britain and Northern Ireland image

Change

>>e.toString();


to

e.printStackTrace();

and let us know the output
Avatar of GregMacken
GregMacken

ASKER

The output is...........


java.lang.ClassNotFoundException: org.gjt.mm.mysql.Driver
        at java.net.URLClassLoader$1.run(URLClassLoader.java:199)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:187)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:289)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:274)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:235)
        at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:302)
        at java.lang.Class.forName0(Native Method)
        at java.lang.Class.forName(Class.java:141)
        at work.main(work.java:19)
ASKER CERTIFIED SOLUTION
Avatar of CEHJ
CEHJ
Flag of United Kingdom of Great Britain and Northern Ireland image

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
I copied mysql-connector-java-3.0.10-stable-bin.jar into all lib folders in the tomcat directory and in still doesn't work.  
I thought you were trying to run this as an app? If a webapp, put it into your WEB-INF/lib
put your jar in <webapp>/WEB-INF/lib
there seems to be no lib folder in webapps/web-inf
There should be. It's WEB-INF/lib of your webapp
> webapps/web-inf

not webapps, the WEB-INF folder inside your web application root directory.
(i.e. of each individual webapp)
anyway i did a search for every lib folder in the tomcat directory and any lib folder i came across I pasted the jar file into it. Should I be setting the classpath?
It's the lib/ext of your Java runtime and SDK that i mean not Tomcat
(your original comment said you didn't have a problem with servlets):

>>when I use the same code in a servlet it worls perfectly. Any idea why it won't work as a normal java file?
> Should I be setting the classpath?

yes you can add the jar file to your CLASSPATH.
You're right i did say it was an app - sorry to confuse you.

Here's what I did.......

I moved this java file to c:\

I placed the mysql-connector-java-3.0.6-stable-bin.jar file in C:\j2sdk1.4.2_03\lib\

and set the classpath as follows......

set classpath=C:\j2sdk1.4.2_03\lib\mysql-connector-java-3.0.6-stable-bin

but still it gives the same error
It's lib\ext

not lib
It should also go in lib\ext of the runtime too
> set classpath=C:\j2sdk1.4.2_03\lib\mysql-connector-java-3.0.6-stable-bin

set classpath=C:\j2sdk1.4.2_03\lib\mysql-connector-java-3.0.6-stable-bin.jar

and open a new command window

it worked....... I placed the jar file in jre\lib\ext  as you suggested

thanks.. sorry I'm slow on the uptake
I think if you change the classpath.. you may want to restart tomcat for it to take effect.
>>thanks.. sorry I'm slow on the uptake

No problem.
thanks all: -}
An alternative would be to set the classpath to the jar (inclusive) as an *environment* variable.