2017-05-04 43 views
0

我希望在MySQL和我的Java应用程序之间建立连接。 当我运行程序时,我得到这个错误:我的日志信息是真实的。这是一个项目,我应该能够在本地数据库中添加,插入,删除和更新客户信息。用java连接到SQL_database

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) 

代码

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

我已经删除了IntelliJ标签,因为您的问题实际上并不是关于IntelliJ。您使用IntelliJ开发程序与此问题无关。鉴于此问题是由错字/错误类名引起的(请参阅[由YCF_L回答](http://stackoverflow.com/a/43784715/466862)),我已决定将您的问题关闭到用于连接来自Java的MySQL。 –

回答

2

驱动程序不正确,你必须使用:

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

取而代之的是:

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

但调用CLA ss.forName()不再是必要的,因为Java 6中,您可以阅读this,和喜欢他的回答@duffymo提,请确保驱动程序jar在classpath

1

ClassNotFoundException手段存在的类装载器不能找到MySQL的JDBC驱动程序类。

您需要下载MySQL连接器JAR并将其添加到您的CLASSPATH中。我想推荐MySQL JDBC tutorial

这里有一个Java提示:不要在catch块写邮件:

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

打印或记录整个堆栈跟踪。这是您的消息提供的更多信息。

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

好吧,我已经做了,我没有得到一个错误了,但是当我运行该程序sqlException正在连接内部投射。 –

+0

发布例外。它会帮助我们弄清楚你的下一个错误是什么。 – duffymo

+0

我想使用这段代码,但它说我需要创建类JDBCTutorialUtilities, catch(SQLException e){0} {0} {0} {0} JDBCTutorialUtilities.printSQLException(e); } –