2017-10-12 2 views
0

Actuellement, j'ai un objet Java appelé travail, cet objet a cette méthode à l'intérieur. J'appelle cette méthode à l'intérieur de ma servlet pour me connecter à ma base de données et ajouter une ligne de table. Quelle que soit la raison, je reçois toujours une exception de pointeur nul lors de l'exécution du débogage. Quelqu'un peut-il me guider comment faire fonctionner correctement?Méthode de connexion à DB donnant une exception de pointeur nul

protected void doPost(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { 

    // Obtain submitted form data 

    Work work = new Work(); 
    String firstName = req.getParameter("First_Name"); 
    String lastName = req.getParameter("Last_Name"); 
    String username = req.getParameter("User_Name"); 
    String email = req.getParameter("Email_Address"); 
    String password = req.getParameter("Password"); 

    ResultSet rs = null; 
    Connection conn = null; 
    Statement st = null; 

    try { 
     work.Connection(conn); 


     // Prepare the SQL statmenet to insert the values 

     PreparedStatement stmt = conn.prepareStatement("INSERT INTO userdetails(First_Name, Last_Name, Email_Address, Password, User_Name) VALUES (?,?,?,?,?)"); 
     stmt.setString(1, firstName); 
     stmt.setString(2, lastName); 
     stmt.setString(3, email); 
     stmt.setString(4, password); 
     stmt.setString(5, username); 

     // Execute the insert 
     stmt.executeUpdate(); 
     conn.close(); 

     // Dispatch into success page 
     RequestDispatcher requestDispatcher = req.getRequestDispatcher("login.jsp"); 
     requestDispatcher.forward(req, res); 
    } catch (Exception e) { 
     work.ErrorHome(req, res, e); 
    } finally { 
     try { 
      if (st != null) 
       st.close(); 
     } catch (java.sql.SQLException e) { 
     } 
     try { 
      if (conn != null) 
       conn.close(); 
     } catch (java.sql.SQLException e) { 
     } 
     try { 
      if (rs != null) 
       rs.close(); 
     } catch (java.sql.SQLException e) { 
     } 
    } 
} 

}

+0

Ajouter stacktrace pour aider – BoBasket4

+1

Sommes-nous censés deviner où exactement vous obtenez l'exception NullPointerException ou pourquoi ne nous dites-vous pas et ne publiez pas la Stacktrace? à côté de cela, je doute vraiment que ce soit différent d'un NPE typique et sera donc probablement fermé comme un doublon. –

+0

Avez-vous écrit la méthode 'public void Connection (Connection conn)' vous-même? Parce que cela ne fonctionnera pas parce que [Java est toujours transmis par valeur] (https://stackoverflow.com/questions/40480/is-java-pass-by-reference-or-pass-by-value). Vous devez retourner la connexion créée et travailler avec cette valeur de retour! –

Répondre

2

Ressaisissez votre méthode Connection(Connection conn) comme suit:

public Connection createConnection() throws NamingException, SQLException { 
    // Setup the Database datasource 
    Context ctx = new InitialContext(); 
    Context env = (Context) ctx.lookup("java:comp/env"); 
    DataSource ds = (DataSource) env.lookup("jdbc/carRentalSystem"); 
    return ds.getConnection(); 
} 

Et plus tard, dans l'utilisation du code source:

conn = work.createConnection(); 

au lieu de:

work.Connection(conn); 

Cela devrait éviter votre NPE.

+0

Merci monsieur cela a fonctionné! –