2015-12-11 153 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');