2016-04-01 73 views
2

我試圖連接到通過mysql_workbench在linux機器上創建的sql數據庫。我目前通過終端使用文本編輯器,因爲這就是我覺得舒服代碼JDBC驅動程序和終端類路徑

我的DatabaseConnection類具有下面的代碼,大多與System.out.println的,試圖找到問題的原因:

final String JDBC_DRIVER = "com.mysql.jdbc.Driver"; 
final String DB_URL = "jdbc:mysql://localhost:3306/mydb"; 

final String user = "root"; 
final String pass = "pass"; 

Connection connection; 
Statement statement; 

public DatabaseConnection(){ 

} 

public void connect(){ 
    System.out.println("Entering method"); 
    try { 
     System.out.println("Attempting to load driver"); 
     Class.forName(JDBC_DRIVER); 
     System.out.println("Driver Loaded");   
     connection = DriverManager.getConnection(DB_URL, user, pass); 
     System.out.println("Connection established"); 
     statement = connection.createStatement(); 
     System.out.println(" statement made"); 
     ResultSet resultSet = statement.executeQuery("show databases"); 
     System.out.println("statement executed"); 

     while(resultSet.next()){ 
      System.out.println(resultSet.next()); 
     } 
     System.out.println("finished printing result set"); 

     statement.close(); 
    } catch(ClassNotFoundException ex) { 
     System.out.println("Error: unable to load driver class!"); 
     System.exit(1); 
    } catch (SQLException sqle) { 
     System.out.println("Connection Error");   
     sqle.getErrorCode(); 
    } 

} 
} 

我也有Test類來測試這一點:在終端中運行時,它目前

class Test { 

    public static void main(String[] args){ 
     DatabaseConnection connection = new DatabaseConnection(); 
     connection.connect(); 
    } 
} 

我的命令是:

javac -cp .:/lib/mysql-connector-java-5.1.38-bin.jar Test.java 

(在包含.java文件我頂層文件夾,我有包含我的JDBC驅動程序lib子文件夾)

,編譯罰款。接下來,我運行它使用

java -cp .:/lib/mysql-connector-java-5.1.38-bin.jar Test 

而且我得到以下錯誤:

java -cp .:/lib/mysql-connector-java-5.1.38-bin.jar Test 
Entering method 
Attempting to load driver 
Error: unable to load driver class! 

所以它看起來是它沒有加載在Class.forName()方法司機和失敗。有人可能會幫助解釋爲什麼和可能的解決方案嗎?

在mysql_workbench中,我認爲數據庫已啓動並正在運行,因爲我可以在工作臺查詢命令行中查詢它以顯示當前爲空的數據庫和表。

+0

也許嘗試添加結腸和斜線,例如之間的時段'java -cp。:./ lib/...'? –

+0

謝謝,它連接。發佈作爲答案,我會指出你。非常感謝! – shirafuno

+1

請注意:不再需要使用'Class.forName'來加載JDBC驅動程序,Java會自動將驅動程序加載到類路徑中。 –

回答

1

的Java無法找到MySQL JDBC驅動程序的JAR文件,因爲-cp論點

java -cp .:/lib/mysql-connector-java-5.1.38-bin.jar Test 

指定兩個(冒號分隔)地點:

  1. .
  2. /lib/mysql-connector-java-5.1.38-bin.jar

第二個位置被解釋爲絕對路徑。將它解釋爲相對路徑它應該與一個週期(.)開始,即,

java -cp .:./lib/mysql-connector-java-5.1.38-bin.jar Test