[Java / JDBC / MySQL] No suitable driver

Pagina: 1
Acties:

  • BikkelZ
  • Registratie: Januari 2000
  • Laatst online: 28-03 23:19
Ik probeer een MySQL 4.1 database die ik op localhost heb draaien te benaderen via Java. Ik heb een standaard stukje code gecopy/paste om te testen of het werkt, om vanuit daar, als het verder werkt het te integreren waar ik het nodig heb in mijn eigen code:

Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
package sud;

import java.sql.*;

public class JDBCSample {

 public static void main(java.lang.String[] args) {
   try {
     // This is where we load the driver
     Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
   }
   catch (ClassNotFoundException e) {
     System.out.println("Unable to load Driver Class");
     return;
   }

   try {
     // All database access is within a try/catch block. Connect to database,
     // specifying particular database, username, and password
     Connection con = DriverManager.getConnection("localhost","********","*********");

     // Create and execute an SQL Statement
     Statement stmt = con.createStatement();
     ResultSet rs = stmt.executeQuery("SELECT * FROM Players");

     // Display the SQL Results
     while(rs.next()) {
       System.out.println(rs.getString("Name"));
     }

     // Make sure our database resources are released
     rs.close(  );
     stmt.close(  );
     con.close(  );

     }
     catch (SQLException se) {
       // Inform user of any SQL errors
       System.out.println("SQL Exception: " + se.getMessage(  ));
       se.printStackTrace(System.out);
      }
    }
}


Het genereert de volgende error message:

code:
1
2
3
4
5
6
SQL Exception: No suitable driver
java.sql.SQLException: No suitable driver
        at java.sql.DriverManager.getConnection(DriverManager.java:545)
        at java.sql.DriverManager.getConnection(DriverManager.java:171)
        at sud.JDBCSample.main(JDBCSample.java:20)
Press any key to continue . . .


Ik heb het volgende classpath gebruikt:

CLASSPATH=E:\studie\java\; D:\mysql-connector-java-3.1.7\mysql-connector-java-3.
1.7-bin.jar; D:\mysql-connector-java-3.1.7\

Ik kan MySQL gewoon wel benaderen en queryen. Het feit dat hij pas de fout op regel 20 geeft betekent dat Java de driver wel kan laden maar het aan de MySQL kant fout gaat volgens mij.

Iemand vertelde me dat een bepaalde versie van MySQL nodig is voor een bepaalde versie van JDBC, maar kon me daar verder niet echt in detail iets over zeggen, en op mysql.com kon ik ook geen informatie hier over geven. Ik heb verder alles ingesteld zoals het in de verschillende tutorials en FAQ's op mysql.com en andere sites stond. Ik heb het ook al aan meerdere mensen voorgelegd, die kwamen er ook zo gauw niet uit.

iOS developer


Verwijderd

Je kiest de verkeerde driver....

Verander
Java:
1
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); 


In
Java:
1
Class.forName("com.mysql.jdbc.Driver");

  • BikkelZ
  • Registratie: Januari 2000
  • Laatst online: 28-03 23:19
Verwijderd schreef op zaterdag 09 april 2005 @ 12:45:
Je kiest de verkeerde driver....

Verander
Java:
1
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); 


In
Java:
1
Class.forName("com.mysql.jdbc.Driver");
Zelfde error helaas :(

code:
1
2
3
4
5
6
SQL Exception: No suitable driver
java.sql.SQLException: No suitable driver
        at java.sql.DriverManager.getConnection(DriverManager.java:545)
        at java.sql.DriverManager.getConnection(DriverManager.java:171)
        at sud.JDBCSample.main(JDBCSample.java:20)
Press any key to continue . . .

[ Voor 3% gewijzigd door BikkelZ op 09-04-2005 12:50 ]

iOS developer


  • momania
  • Registratie: Mei 2000
  • Laatst online: 08-05 12:07

momania

iPhone 30! Bam!

Als je nou eens een andere url dan alleen localhost probeerd:

code:
1
jdbc:mysql://localhost/<databasenaam>

:?

[ Voor 5% gewijzigd door momania op 09-04-2005 12:54 ]

Neem je whisky mee, is het te weinig... *zucht*


Verwijderd

Dit zou moeten werken:
Java:
1
2
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
dbConnectie = DriverManager.getConnection("jdbc:odbc:odbcNaam", "user", "wachtwoord");

Als dit niet werkt heb je misschien iets fout staan bij je ODBC settings? Heb je de verbinding getest aldaar? Is een knoppie voor. (Ik neem even aan dat je Windows gebruikt)

[ Voor 50% gewijzigd door Verwijderd op 09-04-2005 13:06 . Reden: code tags toegevoegd ]


Verwijderd

code:
1
2
3
            //instancieer de mysql connector en connect naar de db over tcp/ip
            Class.forName("com.mysql.jdbc.Driver").newInstance();
            con = DriverManager.getConnection("jdbc:mysql:///"+dbName, user, pass);


Zo had ik het met mysql en dat werkt. wel natuurlijk de dbName user en pass zelf aanmaken.

  • BikkelZ
  • Registratie: Januari 2000
  • Laatst online: 28-03 23:19
Verwijderd schreef op zaterdag 09 april 2005 @ 13:02:
Dit zou moeten werken:
Java:
1
2
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
dbConnectie = DriverManager.getConnection("jdbc:odbc:odbcNaam", "user", "wachtwoord");

Als dit niet werkt heb je misschien iets fout staan bij je ODBC settings? Heb je de verbinding getest aldaar? Is een knoppie voor. (Ik neem even aan dat je Windows gebruikt)
Nope.....:(

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
SQL Exception: [Microsoft][ODBC Driver Manager] Data source name not found and n
o default driver specified
java.sql.SQLException: [Microsoft][ODBC Driver Manager] Data source name not fou
nd and no default driver specified
        at sun.jdbc.odbc.JdbcOdbc.createSQLException(JdbcOdbc.java:6958)
        at sun.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.java:7115)
        at sun.jdbc.odbc.JdbcOdbc.SQLDriverConnect(JdbcOdbc.java:3074)
        at sun.jdbc.odbc.JdbcOdbcConnection.initialize(JdbcOdbcConnection.java:3
23)
        at sun.jdbc.odbc.JdbcOdbcDriver.connect(JdbcOdbcDriver.java:174)
        at java.sql.DriverManager.getConnection(DriverManager.java:525)
        at java.sql.DriverManager.getConnection(DriverManager.java:171)
        at sud.JDBCSample.main(JDBCSample.java:20)
Press any key to continue . . .


Het is mij ook niet geheel duidelijk waar Microsoft in dit verhaal voorkomt aangezien zowel MySQL als Java niets met Microsoft te maken hebben.

iOS developer


Verwijderd

BikkelZ schreef op zaterdag 09 april 2005 @ 13:32:
[...]


Het is mij ook niet geheel duidelijk waar Microsoft in dit verhaal voorkomt aangezien zowel MySQL als Java niets met Microsoft te maken hebben.
Dat komt omdat ODBC een techniek van Microsoft is...Het is een manier om de meeste DB pakketten met Microsoft samen te laten werken als ik me niet vergis. Daarom moet je ook die code proberen die ik had neergezet. Dat is alleen van/voor MySQL.

Kijk dat is idd beter...het werkt iig wel, alleen de localhostfout nog oplossen :D

[ Voor 20% gewijzigd door Verwijderd op 09-04-2005 13:39 ]


  • BikkelZ
  • Registratie: Januari 2000
  • Laatst online: 28-03 23:19
Verwijderd schreef op zaterdag 09 april 2005 @ 13:10:
code:
1
2
3
            //instancieer de mysql connector en connect naar de db over tcp/ip
            Class.forName("com.mysql.jdbc.Driver").newInstance();
            con = DriverManager.getConnection("jdbc:mysql:///"+dbName, user, pass);


Zo had ik het met mysql en dat werkt. wel natuurlijk de dbName user en pass zelf aanmaken.
Dit geeft al een veel hoopvollere foutmelding!

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
SQL Exception: Access denied for user ''@'localhost' (using password: NO)
java.sql.SQLException: Access denied for user ''@'localhost' (using password: NO
)
        at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2847)
        at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:750)
        at com.mysql.jdbc.MysqlIO.secureAuth411(MysqlIO.java:3558)
        at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1151)
        at com.mysql.jdbc.Connection.createNewIO(Connection.java:1768)
        at com.mysql.jdbc.Connection.<init>(Connection.java:430)
        at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java
:268)
        at java.sql.DriverManager.getConnection(DriverManager.java:525)
        at java.sql.DriverManager.getConnection(DriverManager.java:193)
        at sud.JDBCSample.main(JDBCSample.java:20)
Press any key to continue . . .


Ik heb het nu zo in de code staan:

Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 public static void main(java.lang.String[] args) {
   try {
     // This is where we load the driver
     Class.forName("com.mysql.jdbc.Driver");
   }
   catch (ClassNotFoundException e) {
     System.out.println("Unable to load Driver Class");
     return;
   }

   try {
     // All database access is within a try/catch block. Connect to database,
     // specifying particular database, username, and password
     Connection con = DriverManager.getConnection("jdbc:mysql:///sud:username:password");


Waar username en password natuurlijk mijn username en password zijn voor de database, en sud de naam van de database is.

[ Voor 23% gewijzigd door BikkelZ op 09-04-2005 13:40 ]

iOS developer


  • BikkelZ
  • Registratie: Januari 2000
  • Laatst online: 28-03 23:19
Yes, de database connectie loopt!

Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 public static void main(java.lang.String[] args) {
    String userName = "******";
    String password = "*****";
    String url = "jdbc:mysql://localhost/sud2";
   try {
     // This is where we load the driver
     Class.forName("com.mysql.jdbc.Driver");
   }
   catch (ClassNotFoundException e) {
     System.out.println("Unable to load Driver Class");
     return;
   }

   try {
     // All database access is within a try/catch block. Connect to database,
     // specifying particular database, username, and password
     Connection con = DriverManager.getConnection(url, userName, password);

[ Voor 91% gewijzigd door BikkelZ op 09-04-2005 13:55 ]

iOS developer

Pagina: 1