2011-09-20 13 views
-5

하나의 login.jsp 페이지를 만들었습니다 ...이 페이지에서 제출 버튼 하단에 새로운 사용자 링크가 추가되었습니다. 링크를 클릭하면 새 사용자 등록 양식이 열립니다. 나는 데이터를 데이터베이스에 저장하려고하지만 오라클에 테이블을 만들었지 만 null 포인터 예외를 나타냅니다 ..... newuser_db.java에서 92 번째 줄은 newuser_db.java에 있습니다. ...... 오류를 좀 도와주세요 : (92)이다 stmt1 = con.prepareStatement("insert into userdetails values(ka1.nextval,?,?,?,?,?,?,?,23,'as','14-nov-87')");테이블에 데이터를 삽입하는 방법은 무엇입니까?

디자인 : enter image description here enter image description here enter image description here

전체 코드 :

package com.sla; 

import java.io.IOException; 
import java.io.PrintWriter; 
import java.sql.Connection; 
import java.sql.DriverManager; 
import java.sql.ResultSet; 
import java.sql.SQLException; 
import java.sql.PreparedStatement; 


import javax.servlet.ServletException; 
import javax.servlet.ServletRequest; 
import javax.servlet.ServletResponse; 
import javax.servlet.http.HttpServlet; 

import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 


/** 
* Servlet implementation class newuser_db 
*/ 
public class newuser_db extends HttpServlet { 
    private static final long serialVersionUID = 1L; 
    PreparedStatement stmt=null; 
    Connection con =null; 
    ResultSet rs=null; 


    /** 
    * @see HttpServlet#HttpServlet() 
    */ 
    public newuser_db() { 
     super(); 
     // TODO Auto-generated constructor stub 
    } 
    @Override 
    public void init() throws ServletException { 
     // TODO Auto-generated method stub 
     super.init(); 
     try 
     { 
      Class.forName("sun.Jdbc.Odbc.JdbcOdbcDriver"); 
     } 
     catch (ClassNotFoundException ex) 
     { 
      ex.printStackTrace(); 
     } 


     try 
     { 
      con =DriverManager.getConnection("Jdbc:odbc:servletdb","system","balaji"); 

     } 
     catch(SQLException ex) 
     { 
      ex.printStackTrace(); 
     } 



     // TODO Auto-generated method stub 
    } 

    @Override 
    public void service(ServletRequest arg0, ServletResponse arg1) 
      throws ServletException, IOException { 
     // TODO Auto-generated method stub 
     super.service(arg0, arg1); 
     PrintWriter out=arg1.getWriter(); 
     String s1=arg0.getParameter("USERID"); 
     String s2=arg0.getParameter("FIRSTNAME"); 
     String s3=arg0.getParameter("LASTNAME"); 
     String s4=arg0.getParameter("EMAILID"); 
     String s5=arg0.getParameter("ORGNAME"); 
     String s6=arg0.getParameter("MOBILENO"); 
     String s7=arg0.getParameter("PHONENO"); 
     String s8=arg0.getParameter("PASSWORD"); 

     out.println("inserted"); 
     out.println(s1); 




     out.println("inserted1"); 
     //String sql="insert into userdetails values(ka.nextval,"+s1+","+s2+","+s3+","+s4+","+s5+","+s6+","+s7+",56,'de',01-jan-98)"; 
     PreparedStatement stmt1; 
     try { 
      stmt1 = con.prepareStatement("insert into userdetails values(ka1.nextval,?,?,?,?,?,?,?,23,'as','14-nov-87')"); 
     stmt1.setString(1,s1); 
      stmt1.setString(2,s2); 
      stmt1.setString(3,s3); 
      stmt1.setString(4,s4); 
      stmt1.setString(5,s5); 
      stmt1.setString(6,s6); 
      stmt1.setString(7,s7); 
      stmt1.setString(8,s8); 


      //stmt1.executeUpdate(); 
      out.println("inserted2"); 
      stmt1.executeUpdate(); 
      out.println("inserted3"); 
     } catch (SQLException e1) { 
      // TODO Auto-generated catch block 
     out.println(e1); 

     } 


    } 
    @Override 
    public void destroy() { 
     // TODO Auto-generated method stub 
     super.destroy(); 
     try 
     { 
      if(stmt!=null) 
       stmt.close(); 
      stmt=null; 

     } 
     catch (SQLException ex) 
     { 
      ex.printStackTrace(); 
     } 
     try 
     { 
      if(con!=null) 
       con.close(); 
      con=null; 

     } 
     catch (SQLException ex) 
     { 
      ex.printStackTrace(); 
     } 
    } 



    /** 
    * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) 
    */ 
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
     // TODO Auto-generated method stub 
    } 

    /** 
    * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) 
    */ 
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
     // TODO Auto-generated method stub 
    } 

} 

나에게 사람을 도와주세요 ... 난 혼란 스럽네요 .......

+3

코드 92 번에서 NullPointerException에 대해 불평하고 있습니다. 코드 92 줄을 보여 주려고합니다. 물론, use_db 클래스의 92 번째 줄에 어떤 변수가 ** null **인지 알 수 있습니다. –

+0

데이터베이스 연결 코드가 맞습니까? 확인해주세요 ..... – Balaji

답변

0

92 번째 줄에서 NullPointerException이 발생하는 경우 con이 null입니다. 코드 으로 초기화 했습니까? 나는 그것이 생성자로부터 호출되지 않는다는 것을 알아 차렸다.

+0

제발 그 라인을 보여주세요 .... JSP로 및 서블릿 응용 프로그램에 대한 새로운 ......... – Balaji

+0

** newuser_db ** 클래스에서 ** init ** 메서드를 호출하여 ** con **을 인스턴스화합니다. 전화 했어? 그렇지 않다면 ** con **은 ** null **입니다. –

4

RoseIndia.net의 끔찍한 튜토리얼 중 하나를 따라 한 것처럼 보입니다. 나는 JDBC 튜토리얼을위한 더 나은 사이트를 읽을 것을 제안한다.

코드에 잘못 될 수있는 것들이 너무 많습니다. 팀원들에게 지식이있는 사람에게 도움을 청해야합니다. 인터넷 포럼은 많은 도움을 줄 수 있습니다.

  • PreparedStatement, ResultSetConnection는 서블릿의 클래스 멤버로 선언됩니다. 이러한 멤버는 이제 여러 요청에서 공유되며 요청에 따라 이러한 멤버의 상태가 변경되어 다른 요청에 대해 모호하고 혼동을 줄 수 있으므로 코딩 방법이 좋지 않습니다.
  • sun.Jdbc.Odbc.JdbcOdbcDriver은 Oracle 10g Express Edition 인스턴스에 연결하는 데 사용됩니다. JDBC 드라이버는 유형 1 드라이버이며 데이터베이스에 대한 실제 JDBC 드라이버가 없을 때 사용해야한다는 점에서 JDBC 드라이버에 적합하지 않습니다. 대신 Oracle 10g/11g JDBC 드라이버를 사용하십시오.
  • ClassNotFoundExceptionSQLException과 같은 예외를 catch하고 init에 저장하고 실행을 중단하지 않고 스택 추적을 인쇄하고 있습니다. 이 경우 throw 된 예외는 스택 추적을 인쇄 했으므로 컨테이너에서 무시됩니다. 따라서 서블릿은 초기화 될 것이지만 예외의 성격을 고려하여 요청을 처리 할 수는 없습니다.
  • service을 무시하고 doGetdoPost에 대한 메서드 본문을 제공하지 않습니다. 이것은 다시 가난한 행동입니다. 좋은 이유가없는 한 service을 재정의하지 마십시오 (그리고 나는 당신이 가지고 있지 않을 것이라고 확신합니다). 당신이 때문에

    con =DriverManager.getConnection("Jdbc:odbc:servletdb","system","balaji"); 
    

    : 예외가 init 방법이 줄을 던져 때문에

모든 것을 말해 두 겠는데, 당신이 가장 가능성이 service 방법에 NullPointerException을 받고있는 이유는 아마도 이 행에 의해 던져진 예외를 잡아서 아무것도하지 않으면 con 변수가 그러한 이벤트에서 null이된다는 것을 알 수 있습니다.나중에 서블릿이 요청을 처리하고 PreparedStatement 인스턴스를 만들려고하면 Connection 인스턴스가 null이므로 실패합니다.

+0

덕분에 나는 일하지 않고있다 .... 실제로 며칠간 노력하고있다. 아무도 나에게 도움이되지 않는다. 어쨌든 내가 시도 할 것이다. ..... – Balaji

+0

여기서 의미있는 질문을 게시한다면, 사람들은 답변을 기꺼이. 당신의 질문을 골라 내고 문제를 디버깅하기위한 노력으로 비슷한 노력으로 답을 얻게 될 것입니다. –

+0

1. response.setContentType ("text/html"); 2.String url = "jdbc : mysql : // localhost : 3306 /"; 그들이 사용하는 이유에 대해이 두 줄을 설명해주십시오. ..... – Balaji

관련 문제