2011-11-19 219 views
0

我想連接到我的數據庫,但我的try/catch不斷收到錯誤。這是我第一次嘗試與JDBC連接。我不確定自己做錯了什麼,因爲我只是按照教程進行操作。JDBC - 無法連接到MySQL

代碼:

import java.sql.*; 


public class jdbc { 

    public static void main (String[] args) 
    { 
     Connection conn = null; 

     try 
     { 
      String userName = "root"; 
      String password = ""; 
      String url = "jdbc:mysql://localhost:3306/apple"; 
      Class.forName ("com.mysql.jdbc.Driver").newInstance(); 
      conn = DriverManager.getConnection (url, userName, password); 
      System.out.println ("Database connection established"); 
     } 
     catch (Exception e) 
     { 
      System.err.println ("Cannot connect to database server"); 
     } 
     finally 
     { 
      if (conn != null) 
      { 
       try 
       { 
        conn.close(); 
        System.out.println ("Database connection terminated"); 
       } 
       catch (Exception e) { /* ignore close errors */ } 
      } 
     } 
    } 
} 

http://img833.imageshack.us/img833/604/databaseproblem.jpg

+1

將e.printStackTrace()添加到您的catch塊。這將更容易調試問題。 –

+6

在發佈異常自己的消息堆棧跟蹤之前,您將永遠無法找到。切勿替換自己的消息:始終打印或記錄實際的異常類和消息,嚴重情況下還會顯示堆棧跟蹤。 – EJP

+0

你可以發佈你的stacktrace嗎? –

回答

1

要獲得合適的堆棧跟蹤,刪除第一個catch塊在你的方法:

public static void main(String[] args) throws Exception { 
    Connection conn = null; 
    try { 
     String userName = "root"; 
     String password = ""; 
     String url = "jdbc:mysql://localhost:3306/apple"; 
     Class.forName("com.mysql.jdbc.Driver").newInstance(); 
     conn = DriverManager.getConnection(url, userName, password); 
     System.out.println("Database connection established"); 
    } finally { 
     if (conn != null) { 
      try { 
       conn.close(); 
       System.out.println("Database connection terminated"); 
      } catch (Exception e) { /* ignore close errors */ } 
     } 
    } 
} 

然後你會發現錯誤的性質。您還需要確保mysql-connector.jar位於您的類路徑中。該jar包含您正用於連接的com.mysql.jdbc.Driver類。

0

上面的代碼看起來是正確的,似乎有異常的可能性的數量。

  1. 檢查mysql驅動程序jar是可用的構建/類路徑。
  2. 檢查mysql已正確安裝。
  3. 檢查mysql用戶名/密碼。
  4. 檢查mysql端口。
0

有同樣的問題,兩件事情解決我的問題:

You must remember to put your JDBC connection code in an AsyncTask, other wise you will BURN BURN BURN! 

Do NOT mistake "INTERNET" permission for the "uses INTERNET" permission. You need the latter to perform JDBC. 

如果上述解決您的問題,檢查開始「引發的:」在logcat的線在你的警戒線。谷歌搜索,讓你接近尋找解決方案。