public static Connection connect;
public static ResultSet resultSet;
static final String DATABASE_URL = "jdbc:mysql://localhost/java_dev";
public ServerFunctions() {
String Driver = "com.mysql.jdbc.Driver";
String DB_USERNAME = "lucky";
String DB_PASSWORD = "lucky";
try {
Class.forName(Driver);
connect = DriverManager.getConnection(DATABASE_URL,DB_USERNAME, DB_PASSWORD);
} catch(Exception e) {
System.out.println("Database Not Connected ! ");
}
}
public static Boolean verificator(String username, String password) {
try {
PreparedStatement prepare = connect.prepareStatement(
"Select * from users where username='?'&&password='?'");
Run Code Online (Sandbox Code Playgroud)
上面是我的代码片段.我声明Connection
和Resultset
对象静态,因此可以从静态验证器方法调用它们.同样,verificator方法被声明为static,因此可以通过使用className.verificator(param,param)从不同的类作为类变量调用它.
它在我单独测试类时编译并运行,但是每当从不同的类调用时,我就会在PerparedStatement行中得到NullPointerException错误.
有人可以帮助我为什么会发生这种情况?
谢谢
您说您将verificator方法声明为static,因此可以从其他类访问它,并且验证方法使用连接,这也是静态的.
问题是连接只在对象的构造函数中初始化,因此,如果从不调用构造函数,则connect将为null.
您需要在静态块中初始化connect变量,或者在使用它之前验证它是否为null.