Existe outra maneira de resultset acesso sem jogar uma exceção de ponto nulo

Ashwin Satyawan:

Estou tentando acessar os dados de uma única linha obtida por uma consulta seleção. Quando eu tento acessar os dados por meio de rs.getString()lança NullPointerException.

Qualquer método para acessar os dados do conjunto de resultados leva a uma NullPointerException. Por que isso acontece?

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    doGet(request, response);

    boolean status=true;
    String email=request.getParameter("user");
    String password=request.getParameter("pass");

    PrintWriter pw = response.getWriter();

    if (status) {
        String driverName = "org.hsqldb.jdbcDriver";
        String URL = "jdbc:hsqldb:hsql://localhost/";
        String UID = "SA";
        String PWD = "";
        Connection con = null;
        PreparedStatement sql = null;
        ResultSet rs = null;

        try {
            Class.forName(driverName);
            con = DriverManager.getConnection(URL, UID, PWD);

            System.out.println("connected = " + con);

            sql = con.prepareStatement("SELECT * FROM \"USER\" where email='"+email+"' and password='"+password+"'");
            boolean sql_st=sql.execute();
            System.out.println(sql_st);
            rs=sql.getResultSet();

            if(rs.next())
            {
                HttpSession hp = request.getSession(true);
                rs=sql.getResultSet();

                hp.setAttribute("name", rs.getString("name"));
                pw.println("<html><body><h1>Welcome "+rs.getString("name")+"</h1></body></html>");
            }
            else
            {
                pw.println("<html><body><h1>invalid credentials</h1></body></html>");
                pw.println("<html><body><a href=login.html>go back</a></body></html>");
            }
        } catch (SQLException e) {
            e.printStackTrace();
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } 
    }
    else
    {
        pw.println("<html><body><h1>Invalid Input</h1></body></html>");
        pw.println("<html><body><a href=register.html>go back</a></body></html>");
    }
Swati:

Você escreveu rs=sql.getResultSet();duas vezes essa é a razão que voltar null, tente usar PreparedStatement como abaixo:

          PreparedStatement  ps= con.prepareStatement("SELECT * FROM USER where 
email=? and password=?");
 //putting value for placeholder (?)
               ps.setString(1,email);
               ps.setString(2,password);
                 ResultSet resultset= ps.executeQuery();
      //if there is row exist then do below
                if(resultset.next()){
               HttpSession hp = request.getSession(true);
             hp.setAttribute("name", resultset.getString("name"));
                  //getting name
                pw.println("<html><body><h1>Welcome "+resultset.getString("name")+"</h1></body></html>");
               } else {
                pw.println("<html><body><h1>invalid credentials</h1></body></html>");
                pw.println("<html><body><a href=login.html>go back</a></body></html>");
            }

Acho que você gosta

Origin http://43.154.161.224:23101/article/api/json?id=237229&siteId=1
Recomendado
Clasificación