Hi,

I tried doing what Rhino suggested by coping the jar
file I downloaded to the jre\lib\ext folder where my
jdk is installed. The only thing that was different on
my system than what Rhino described is that my hard
drive only had a path jre\lib, but with no ext folder
inside the lib directory. Inside that lib folder were
folders named: audio, smm, fonts, images and security.


I added an ext folder and then deposited my folder
containing the jar file here:

C:\Program
Files\JBuilder6\jdk1.3.1\jre\lib\ext\mysql-connector-java-3.1.1-alpha\mysql-connector-java-3.1.1-alpha-bin.jar

Does that look right? When I do that and register the
driver with the DriverManager, I am not getting the
original no driver available exception, instead the
app throws an exception as follows. Am I moving in the
right direction??:

java.lang.NoClassDefFoundError: java/sql/Savepoint

        at
com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:218)

        at
java.sql.DriverManager.getConnection(DriverManager.java:517)

        at
java.sql.DriverManager.getConnection(DriverManager.java:199)

        at
database_test.DBConnector.getConnection(DBConnector.java:54)

        at
database_test.DBConnector.main(DBConnector.java:80)

Exception in thread "main" 

The new source code is below for your convenience:

public class DBConnector
{
    //Class State
    private String dbuser,dbpasswd,dburl;

    public DBConnector()
    {
        dbuser="sspiegler";
        dbpasswd="cuatro";
        dburl=
           
"jdbc:mysql://localhost/menagerie?user="+dbuser+"&password="+dbpasswd;
        try
        {
            //Register the driver with the
DriverManager
           
Class.forName("com.mysql.jdbc.Driver").newInstance();
        }
        catch(Exception e)
        {

        }
    }
    public DBConnector(String aDburl,String
aDbuser,String aDbpasswd)
    {
        this.dbuser=aDbuser;
        this.dbpasswd=aDbpasswd;
        this.dburl=aDburl;
    }

    public Connection getConnection () throws
SQLException
    {
        ResultSet rs=null;
        Connection conn=null;
        try
        {
            conn = DriverManager.getConnection(dburl);
            //Statement state =
conn.createStatement();
            //rs = state.executeQuery("SELECT * FROM
pets");
            if (rs != null)
            {
                // here you would do something with
the ResultSet
            }
        }
        finally
        {
            if (rs != null)
            {
                //rs.close();
            }
        }
        return conn;
    }
       /**
    *  *** for testing purposes only ***
    */
    public static void main(String[] args)
    {
        Connection aConn = null;
        DBConnector dbc = new DBConnector();
        try
        {
            aConn = dbc.getConnection();
        }
        catch(SQLException sqle)
        {
            System.out.println("SQLException: " +
sqle.getMessage());
            System.out.println("SQLState: " +
sqle.getSQLState());
            System.out.println("VendorError: " +
sqle.getErrorCode());
        }
    }
}



--- Mark Matthews <[EMAIL PROTECTED]> wrote:
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
> 
> Rhino wrote:
> 
> > Scott,
> >
> > I'm going to put this reply into the list rather
> than answer it offline. I
> > hope that's okay with you. If I answer you
> offline, only you will know the
> > answer but if I answer on the mailing list,
> everyone who monitors the
> list -
> > and anyone who checks the archives in the future!
> - can benefit.
> >
> > The rest of my reply is interspersed in your
> note....
> >
> > Rhino
> >
> > ----- Original Message -----
> > From: "Scott D. Spiegler"
> <[EMAIL PROTECTED]>
> > To: "Rhino" <[EMAIL PROTECTED]>
> > Sent: Wednesday, June 16, 2004 6:14 PM
> > Subject: Re: Why can't I make a connection?
> >
> >
> >>
> >> > 1. Have you installed a MySQL Java driver and
> is it
> >> > accessible to the
> >> > program?
> >>
> >> That's what I am not sure about. I placed the
> drivers
> >> in the location specified by the documentation or
> at
> >> least I think I have. Where do you usually place
> them?
> >> I followed this course of action from the docs:
> "copy
> >> the "com" and "org" subdirectories and all of
> their
> >> contents to anywhere you like, and put the
> directory
> >> holding the "com" and "org" subdirectories in
> your
> >> classpath". I also added
> >>
> >
>
"D:\mysql-connector-java\mysql-connector-java-3.1.1-alpha\mysql-connector-ja
> > va-3.1.1-alpha-bin.jar;"
> >> to my CLASSPATH variable under
> >> Start->System->Advanced->Environment Variables.
> Is
> >> that correct?
> >>
> > I'm assuming you assigned that path to the
> CLASSPATH environment variable.
> > If not, you should have ;-) I'm also assuming that
> the driver you are
> using
> > is appropriate for the version of MySQL you are
> using.
> >
> > Since the classpath approach doesn't work for you,
> I'm going to suggest
> > another approach, rather than trying to work out
> why your classpath isn't
> > working.
> >
> >  I have lately started putting my database drivers
> in the extensions
> library
> > of the JRE and it's working very well. You can
> read about this
> technique in
> > the Java Tutorial in the trail entitled "The
> Extension Mechanism". I'm not
> > sure which version of Java you are using or
> whether you're familiar
> with the
> > Java Tutorial but I found it very useful in my
> early days in Java and I
> > still use it from time to time to learn new
> things.
> >
> > You can see the Java Tutorial online at
> > http://java.sun.com/docs/books/tutorial/. You can
> see "The Extension
> > Mechanism" in the Specialized Trails area of that
> page. (The Java Tutorial
> > can also be downloaded, which is very handy if you
> have a slow
> connection.)
> >
> > Quoting from this trail:
> > Extensions are groups of packages and classes that
> augment the Java
> platform
> > through the         extension mechanism. The
> extension mechanism
> enables the
> > runtime environment to find and load extension
> classes *without the
> > extension classes having to be named on the class
> path* [emphasis
> added]. In
> > that respect, extension classes are similar to the
> Java platform's core
> > classes. That's also where extensions get their
> name -- they, in effect,
> > extend the platform's core API. [end citation]
> >
> > In a nutshell, if you put your MySQL driver file
> in the JRE/lib/ext
> > directory, your programs should be
> > able to see it and use it without having to mess
> around with your
> classpath.
> >
> > Unfortunately, *finding* the (correct) extensions
> directory can be a
> can of
> > worms, particularly if you have multiple versions
> of Java on your system.
> > For instance, I installed the SDK for Java 1.4.1
> on my main development
> > machine which would suggest that I have only a
> single JRE library. In
> fact,
> > I have FOUR of them. I have:
> > a) the JRE for Java 1.4.1 which I installed
> automatically when I installed
> > the 1.4.1 SDK.
> > b) a second JRE that is standalone, i.e. not part
> of an SDK. I honestly
> > don't recall how that one got there any more.
> > c) a JRE for Java 1.1.8.
> > d) a JRE for Java 1.2.2.
> >
> > The latter two JREs are there because I also have
> DB2 installed on this
> > machine and it comes with two full Java SDKs,
> 1.1.8 and 1.2.2, each of
> which
> > include JREs.
> >
> > You could be in the same sort of situation, not
> necessarily through any
> > action you took consciously. So which extension
> library do you use for
> your
> > MySQL drivers? Well, in theory, you could reason
> it all out but I'm
> going to
> > suggest a "brute force" method that will be much
> faster and shouldn't
> do any
> > harm:
> > 1) find all of your JREs
> > 2) put the MySQL driver in the extension library
> (JRE/lib/ext) of ALL of
> > them
> > 3) once you get your program working, remove the
> MySQL driver from the
> > "extra" extension libraries one at a time,
> ensuring that your program
> still
> > works before attempting to remove the next one. If
> the program stops
> > working, you've removed the wrong copy; put it
> back and verify that the
> > program still works. Eventually, you will only
> have one MySQL driver
> and it
> > will be exactly where it ought to be.
> >
> > With any luck though, you only have one JRE: then
> all you need to do
> is put
> > your MySQL driver in JRE/lib/ext and you should be
> "good to go".
> 
> Please don't do this if you want to save time
> upgrading later on ;)
> 
> I've had more bug reports from users who _think_
> they're using one
> version of the JDBC driver, but they're using one
> from JRE/lib/ext,
> because that path takes 'precedence', and it takes
> forever and a day to
> figure out where it is (especially if they're just
> using 'java' with no
> absolute path to launch the vm).
> 
> Hopefully this will all be cleared up with JDBC-4.0,
> which has some
> 'ease-of-development' stuff being worked on.
> 
> If you're running a Java program, you can pass the
> CLASSPATH
> _explicitly_ in the command-line:
> 
>   java -classpath foo.jar;baz.jar;.
> mypackage.MyClass ....
> 
> (of course use ':' instead of ';' if you're on Unix
> or something 'unixy')
> 
> >
> >> > It sounds a little bit as if this is your first
> >> > Java/MySQL program.
> >>
> >> Yes, it is. Once I make the initial connection, I
> >> think I should know where to go from there, but I
> am
> >> not sure that I am telling my app where to go to
> find
> >> the drivers.
> >>
> > I think you're probably right. I've always found
> that first programs were
> > extremely crucial for developing the confidence
> that it takes to
> proceed and
> > succeed with a given programming technique.
> >
> > Good luck and let us know if my suggestion doesn't
> work for you; perhaps
> > someone else can suggest a better approach!
> 
> Looking at your code in your post, it appears that
> you never 'register'
> the driver with the java.sql.DriverManager.
> 
> You either need to pass it on the Java VM's
> command-line when you launch
> your program (-Djdbc.drivers=com.mysql.jdbc.Driver),
> or alternatively,
> do a Class.forName("com.mysql.jdbc.Driver) in your
> class before you
> attempt to call DriverManager.getConnection(....).
> See
>
http://java.sun.com/j2se/1.4.2/docs/api/java/sql/DriverManager.html
> for
> more information ;)
> 
> Regards,
> 
>       -Mark
> 
> - --
> Mr. Mark Matthews
> MySQL AB, Software Development Manager, J2EE and
> Windows Platforms
> Office: +1 708 332 0507
> www.mysql.com
> 
> MySQL Guide to Lower TCO
>
http://www.mysql.com/it-resources/white-papers/tco.php
> -----BEGIN PGP SIGNATURE-----
> Version: GnuPG v1.2.3 (MingW32)
> Comment: Using GnuPG with Thunderbird -
> http://enigmail.mozdev.org
> 
>
iD8DBQFA0OhTtvXNTca6JD8RAsJlAJ4hHlPE751v/dS6mt7l+y1yLu3uoQCffP7l
> OvRyWuk6OTD120jjxEAFoPI=
> =0uDg
> -----END PGP SIGNATURE-----
> 
> 


=====
We don't see things as they are, we see things as we are.
    --Anais Nin


        
                
__________________________________
Do you Yahoo!?
New and Improved Yahoo! Mail - 100MB free storage!
http://promotions.yahoo.com/new_mail 

-- 
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe:    http://lists.mysql.com/[EMAIL PROTECTED]

Reply via email to