[java] mysql connector

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • mazz
  • Registratie: November 2004
  • Laatst online: 08-06 13:48
Ik heb in mijn netbeans een mysql connector van mysql zelf geimporteerd.
En daarbij heb ik de volgende code gemaakt

Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
public static boolean openConnection( String database, String user, String password ) {
        if(!connectionActive) {
            try {
                //Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
                //con = DriverManager.getConnection( "jdbc:odbc:"+database, user, password );
 Connection conn = null;
               String url = "jdbc:mysql://127.0.0.1/uren";
               Class.forName ("com.mysql.jdbc.Driver").newInstance ();
               conn = DriverManager.getConnection (url, user, password);
                connectionActive = true;
            } catch ( SQLException e ) {
                System.out.println( e.getMessage() + "\n" + e.getSQLState() + "\n" + e.getErrorCode());
                if( closeOnError ) System.exit( 100 );
            } //catch( ClassNotFoundException e ) {
                //System.out.println("ODBC driver voor database " + database + " is niet gevonden.");
                //if( closeOnError ) System.exit( 100 );
           // }
        }
        return connectionActive;


Het probleem is dat netbeans zegt dat bij deze regel Class.forName ("com.mysql.jdbc.Driver").newInstance (); een niet bestaande class wordt opgevraagd. Wat ik op internet las kan het zijn dat de driver al in gebruik is, maar dat lijkt me sterk.

Ik weet bijna zeker dat het iets in de code is. De connector heb ik namelijk ook opgegeven bij project eigenschappen.

Iemand een idee

[ Voor 0% gewijzigd door een moderator op 17-12-2008 18:38 . Reden: Syntax Highlighting FTW \o/ ]

20 jaar, en wat had ik bereikt?


Acties:
  • 0 Henk 'm!

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 23-09 21:37

Creepy

Tactical Espionage Splatterer

Je hebt gezien dat je Class.forName("...").newInstance() doet i.p.v. Class.forName("..."):?
In de comment erboven staat het notabene ook zonder de newInstance().

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Acties:
  • 0 Henk 'm!

  • voodooless
  • Registratie: Januari 2002
  • Laatst online: 10:21

voodooless

Sound is no voodoo!

Heb je de JDBC mysql driver wel in je classpath staan?

Do diamonds shine on the dark side of the moon :?


Acties:
  • 0 Henk 'm!

  • kw4h
  • Registratie: Februari 2008
  • Laatst online: 22-09 09:00
voodooless schreef op woensdag 17 december 2008 @ 18:33:
Heb je de JDBC mysql driver wel in je classpath staan?
Dan hebben we het over tijdens het uitvoeren van de applicatie he. Zowieso weet ik niet of newInstance het probleem is, aangezien de Class.forName gewoon uitgevoerd was, en de klasse in het geheugen wordt geladen. Kan het uiteraard fout hebben.

Wat ik opmaak uit je post (van mazz), is dat dit echt in de editor zelf is. Heb je al geprobeerde de applicatie te draaien? Misschien zet Netbeans je op het verkeerde pad, en werkt het eigenlijk gewoon.

Acties:
  • 0 Henk 'm!

  • BalusC
  • Registratie: Oktober 2000
  • Niet online

BalusC

Carpe diem

Je moet de Class#newInstance() in principe nooit gebruiken om JDBC drivers te laden. Dit is in wezen een workaround om slecht geprogrammeerde JDBC drivers aan de gang te krijgen. Voorzover ik weet is de com.mysql.jdbc.Driver niet zo eentje. Deze werkt prima volgens de standaard Class#forName() manier zoals beschreven in elk zelf-respecterend JDBC tutorial.

Daarnaast, je hebt je probleem eigenlijk niet helemaal duidelijk voorgelegd. Wat gebeurt er precies wanneer je dit uitvoert? Wat voor een foutmelding krijg je precies?

[ Voor 23% gewijzigd door BalusC op 17-12-2008 20:18 ]