2015-12-11 185 views
0

我連接數據庫MySQL時遇到問題。我用數據庫編寫了一個控制檯項目,我在這裏有一個類ConnectionManager。現在我開始寫作網站。我想連接數據庫昂只是複製我的工作類ConnectionManager到新的動態項目。但是這個類返回NULL而不是連接。也許你知道問題在哪裏。 提前謝謝! enter image description here 連接器已添加。空指針異常被稱爲由Connection conn = ConnectionManager.getConnection();連接數據庫時遇到問題

import java.sql.Connection; 
import java.sql.DriverManager; 
import java.sql.SQLException; 
public class ConnectionManager { 
private static String jdbcUrl = "jdbc:mysql://localhost:3306/registration"; 

private static String user = "root"; 
private static String password = "root"; 
private static Connection connection = null; 

public static Connection getConnection() 
{ 
    if (connection == null) 
    { 
     initializeConnection(); 
    } 
    return connection; 
} 

private static void initializeConnection() 
{ 
    Connection conn; 
    try { 
     conn = DriverManager.getConnection(jdbcUrl,user,password); 
     connection = conn;// doesn't execute and I don't know why 
    } catch (SQLException e) { 
     e.printStackTrace(); 
    } 
}} 

使用:Connection conn = ConnectionManager.getConnection();

+0

您是否將堆棧跟蹤信息打印到控制檯? –

+0

是的,我調試它。 ''conn = DriverManager.getConnection(jdbcUrl,user,password);'執行並在轉到catch後 – vika

+0

可能您的用戶沒有權限。嘗試通過mysql控制檯訪問您要執行代碼的位置的mysql服務器。 – Valijon

回答

0

嘗試使構造以及在添加代碼。我正在做同樣的事情和工作。像這樣的: -

public Connection() { 
    // TODO Auto-generated constructor stub 
    try { 
     if (connection == null) 
     { 
      initializeConnection(); 
     } 
     return connection;  
    } 
    catch (ClassNotFoundException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
    catch (SQLException e) { 
    // TODO Auto-generated catch block 
    e.printStackTrace(); 
    } 
} 
0

可能超過一個原因

1-檢查您的用戶權限

GRANT [type of permission] ON [database name].[table name] TO ‘[username]’@'localhost’; 

GRANT ALL PRIVILEGES ON * . * TO 'root'@'localhost'; 

2 - 檢查你的JDBC URL和端口。確保3306端口是avaible到用mysql

jdbc:mysql://localhost:3306/registration 

3-請檢查您的jar文件

  • 下載.jar文件(使用mysql-connector-java的5.1.37-bin.jar)和移動它到庫文件夾
  • 右鍵單擊您的項目>屬性>庫>添加jar /文件夾在該文件夾中選擇您的jar文件。

測試連接

String dbUrl= "jdbc:mysql://localhost:3306/javabase"; 
String username = "root"; 
String password = "root"; 

try (Connection connection = DriverManager.getConnection(dbUrl, username, password)) { 
    System.out.println("Connected to DB!"); 
} catch (SQLException e) { 
    throw new IllegalStateException("Error: ", e); 
} 

4-檢查您的用戶密碼。 如果您不確定更改密碼。

SET PASSWORD FOR 'root'@'localhost' = PASSWORD('root');