2017-05-04 4 views
0

Ich möchte eine Verbindung zwischen MySQL und meiner Java-Anwendung erhalten. Wenn ich das Programm ausführen, erhalte ich diesen Fehler: meine Protokollierungsinformationen sind wahr. Dies ist ein Projekt, in dem ich Kundeninformationen in meiner lokalen Datenbank hinzufügen, einfügen, löschen und aktualisieren kann.Verbinden mit SQL_Datenbank mit Java

java.lang.ClassNotFoundException: com/mysql/jdbc/Driver.class 
    at java.lang.Class.forName0(Native Method) 
    at java.lang.Class.forName(Class.java:264) 
    at sample.Database.Connection.getConnection(Connection.java:26) 
    at sample.Presentation.Controller.<init>(Controller.java:19) 
    at sample.Presentation.Main.start(Main.java:13) 
    at com.sun.javafx.application.LauncherImpl.lambda$launchApplication1$162(LauncherImpl.java:863) 
    at com.sun.javafx.application.PlatformImpl.lambda$runAndWait$175(PlatformImpl.java:326) 
    at com.sun.javafx.application.PlatformImpl.lambda$null$173(PlatformImpl.java:295) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at com.sun.javafx.application.PlatformImpl.lambda$runLater$174(PlatformImpl.java:294) 
    at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:95) 
    at com.sun.glass.ui.win.WinApplication._runLoop(Native Method) 
    at com.sun.glass.ui.win.WinApplication.lambda$null$148(WinApplication.java:191) 
    at java.lang.Thread.run(Thread.java:745) 

-Code

public class Controller { 

public Controller(Stage primaryStage) { 
    ButtonPane buttonPane = new ButtonPane(); 
    AddPane addPane = new AddPane(); 
    VBox vBoxStart = new VBox(); 
    Connection connection = new Connection(); 

    try { 
     connection = connection.getConnection(); 
    }catch (Exception e){ 
     System.out.println("No connection"); 
    } 
    Querys querys = new Querys(); 


    HBox hBoxOption = new HBox(buttonPane.ButtonPane(),addPane.getPane());// Menu and add/update/delete 
    HBox hBoxView = new HBox(); // Calender/tableView 

    vBoxStart.getChildren().addAll(hBoxOption,hBoxView); 

    Scene scene = new Scene(vBoxStart,1000,1000); 
    primaryStage.setScene(scene); 
    primaryStage.show(); 

    Connection finalConnection = connection; 
    addPane.getButtonAddCustomer().setOnAction(event ->{ 
     querys.viewTable(finalConnection,"customer"); 
    }); 

} 
} 
public class Connection { 

String userName = "root"; 
String password = "rasmus12"; 
String dbms = "mysql"; 
String serverName = "localhost"; 
String portNumber = "3306"; 

public Connection getConnection() { 

    Connection conn = null; 
     try { 
      Class.forName("com/mysql/jdbc/Driver.class"); 
      conn = (Connection) DriverManager.getConnection(
        "jdbc:" + this.dbms + "://" + 
          this.serverName + 
          ":" + this.portNumber + "/", 
        this.userName,this.password); 
      System.out.println("Connected to database"); 
     } catch (SQLException e) { 
      System.out.println("SQL Exception in connection"); 
     } catch (ClassNotFoundException e) { 
      e.printStackTrace(); 
     } 


    return conn; 
} 
} 

public class Querys { 

public void viewTable(Connection con, String dbName) { 


    Statement stmt = null; 
    String query = "select * " + 
      "from " + dbName; 
    try { 

     ResultSet rs = stmt.executeQuery(query); 
     while (rs.next()) { 
      int id = rs.getInt("person_id"); 
      String firstName = rs.getString("person_first_name"); 
      String lastName = rs.getString("person_last_name"); 
      String adresse = rs.getString("person_adresse"); 
      String zip = rs.getString("person_zip"); 
      String city = rs.getString("person_city"); 
      int mobilePhone = rs.getInt("person_mobile_phone"); 
      int phone = rs.getInt("person_phone"); 
      int driverLicenceNumber = rs.getInt("person_driver_licence_number"); 
      String driverSinceDate = rs.getString("person_driver_since_date"); 
      String registrationNumber = rs.getString("person_registration_number"); 
      int orderId = rs.getInt("order_id"); 
      System.out.println(id + "\t" + firstName + 
        "\t" + lastName + "\t" + adresse + 
        "\t" + zip + 
        "\t" + city + 
        "\t" + mobilePhone + 
        "\t" + phone + 
        "\t" + driverLicenceNumber + 
        "\t" + driverSinceDate + 
        "\t" + registrationNumber+ 
        "\t" + orderId); 
     } 
    } catch (SQLException e) { 
     System.out.println("SQL Exception"); 
    } finally { 
     if (stmt != null) { 
      try { 
       stmt.close(); 
      } catch (SQLException e) { 
       e.printStackTrace(); 
      } 
     } 
    } 
} 
} 
+0

Ich habe das IntelliJ-Tag entfernt, da es sich bei Ihrer Frage nicht um IntelliJ handelt. Dass Sie IntelliJ verwenden, um Ihr Programm zu entwickeln, hängt nicht mit diesem Problem zusammen. Wenn diese Frage durch einen Tippfehler/falschen Klassennamen verursacht wird (siehe [Antwort von YCF_L] (http://Stackoverflow.com/a/43784715/466862)), habe ich beschlossen, Ihre Frage zu dem kanonischen Duplikat zu schließen, um die Verbindung herzustellen MySQL von Java. –

Antwort

2

Der Treiber ist nicht korrekt Sie verwenden müssen:

Class.forName("com.mysql.jdbc.Driver"); 

Statt dessen:

Class.forName("com/mysql/jdbc/Driver.class"); 

Aber das Gespräch zu Cla ss.forName() ist nicht mehr notwendig, da Java 6, Sie this lesen können, und wie @duffymo in seiner Antwort erwähnt, stellen Sie sicher, dass der Fahrer Glas in Ihrem Classpath existieren

1

ClassNotFoundException Mittel Lader die Klasse können die MySQL nicht gefunden JDBC-Treiberklasse.

Sie müssen das MySQL Connector JAR herunterladen und es zu Ihrem CLASSPATH hinzufügen.

Ich würde eine MySQL JDBC tutorial empfehlen.

Hier ist ein Java-Tipp: Verwenden Sie in catch-Blöcke keine Nachrichten schreiben:

catch (SQLException e) { 
    System.out.println("SQL Exception"); 
} 

drucken oder melden Sie sich den gesamten Stack-Trace. Es sind mehr Informationen, die Ihre Nachricht bereitstellt.

catch (SQLException e) { 
    e.printStackTrace(); 
} 
+0

okay, das habe ich getan, und ich bekomme keinen Fehler mehr, aber wenn ich das Programm ausführen wird die sqlException innerhalb der Verbindung geworfen. –

+0

Veröffentlichen Sie die Ausnahme. Es hilft uns herauszufinden, was Ihr nächster Fehler war. – duffymo

+0

Ich versuche, diesen Code zu verwenden, aber es sagt, dass ich die Klasse JDBCTutorialUtilities erstellen muss, catch (SQLException e) { JDBCTutorialUtilities.printSQLException (e); } –