2012-07-02 4 views
0

Пожалуйста, помогите мне определить, почему я всегда получил эту ошибку:NullPointerException при попытке подключиться к MySQL

java.lang.NullPointerException 
    at TaskDAO.TaskDAO.main(TaskDAO.java:34) 

Примечание: DatebaseHelper класс, который использует JDBC для подключения к MySQL.

import java.sql.SQLException; 
import java.text.SimpleDateFormat; 
import TaskManagement.*; 

public class TaskDAO { 

    DatabaseHelper help; 

    public static void main(String[] args) throws InstantiationException, 
      IllegalAccessException, ClassNotFoundException, SQLException { 

     TaskDAO taskDAO = new TaskDAO(); 

     int taskID = 6; 
     String subject = "lau cua"; 
     Status status = Status.Completeted; 
     Priority priority = Priority.High; 
     Float percentage = 4f; 
     String tableName = "tasks"; 
     String startDate = "2012/11/11"; 
     String dueDate = "2012/11/12"; 

     String query = "INSERT INTO " 
       + tableName 
       + "(taskID,subject,status,priority,percentage,startDate,dueDate)" 
       + " VALUES ('" + taskID + "'," + "'" + subject + "'," + "'" 
       + status + "'," + "'" + priority + "'," + "'" + percentage 
       + "'," + "'" + startDate + "'," + "'" + dueDate + "')"; 

     taskDAO.help.executeQuery(query); 
    } 

} 

ответ

3

DatabaseHelper help является переменной-члена, следовательно, инициализируется null. В main вы создаете TaskDAO, и немедленно используйте его член help, который составляет null. Вы должны инициализировать help с некоторыми действительными DatabaseHelper.

+0

Спасибо вашей за быстрый ответ, я смотрю на это и, возможно, попросит вас о дальнейшей поддержке. Еще раз спасибо. – user1495278

2

help is null ,so NPE, забыли инициализировать его.

DatabaseHelper help = new DatabaseHelper(); 
0

Вы звоните taskDAO.help.executeQuery(query);
Но пока там DatabaseHelper help; равно нулю, так как управляющая переменная по умолчанию равна нулю в Java. Так кулак определить DatabaseHelper help

DatabaseHelper help = new DatabaseHelper();//or whatever create DatabaseHelper 

, а затем вызвать

taskDAO.help.executeQuery(query); 
0

Простой код для чтения из базы данных MySQL приведена ниже

import java.sql.Connection; 
import java.sql.DriverManager; 
import java.sql.ResultSet; 
import java.sql.Statement; 




public class NewClass { 

public static void main(String[] args) { 


    Connection conn = null; 

    String url = "jdbc:mysql://192.168.100.100:3306/"; 
    String dbName = "databaseName"; 
    Statement stmt = null; 
    ResultSet result = null; 
    String driver = "com.mysql.jdbc.Driver"; 
    String databaseUserName = "admin"; 
    String databasePassword = "root"; 
    try { 
     Class.forName(driver).newInstance(); 
     conn = DriverManager.getConnection(url + dbName, databaseUserName, databasePassword); 
     stmt = conn.createStatement(); 
     result = null; 
     String password,username; 
     result = stmt.executeQuery("select * from userTable where username ='user1' "); 
     if(!result.isBeforeFirst()){ 
      System.out.println("resultset contin no rows"); 
     } 
     while (result.next()) { 

      username=result.getString("username"); 
      password = result.getString("password"); 
      System.out.println(username+" "+password); 

     } 
     conn.close(); 
    } catch (Exception e) {  
     e.printStackTrace(); 
    } 
} 
} 
Смежные вопросы