2011-03-20 2 views
0

멋진 답변을 주신 모든 분들께 감사드립니다. @Jan, @Ratna에 의해 모든 것을 시도했지만 예외를 극복 할 수는 없습니다. 내 서블릿 프로그램의 No.52 라인은서블릿 프로그램에서 java.lang.nullpointer 예외가 throw되었습니다.

Statement stmt = connect.createStatement();

여기 코드의 이상을 제시 :

public class s3 extends HttpServlet 
{ 
String message,seat_no,name,ans1,ans2,ans3,ans4,ans5; 
int Total=0; 
Connection connect; 
Statement stmt=null; 
ResultSet rs=null; 
public void doPost(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException 
{ 
try 
{ 
String url="jdbc:mysql://localhost:3306/test"; 
Class.forName("com.mysql.jdbc.Driver"); 
connect=DriverManager.getConnection(url,"root","root"); 
message="Connection Sucessfull"; 
} 
catch(ClassNotFoundException cnfex){ 
cnfex.printStackTrace(); 
} 
catch(SQLException sqlex){ 
sqlex.printStackTrace(); 
} 
catch(Exception excp){ 
excp.printStackTrace(); 
} 
seat_no=request.getParameter("seat_no"); 
name=request.getParameter("name"); 
ans1=request.getParameter("group1"); 
ans2=request.getParameter("group2"); 
ans3=request.getParameter("group3"); 
ans4=request.getParameter("group4"); 
ans5=request.getParameter("group5"); 
if(Boolean.getBoolean(ans1) == true) 
    Total+=2; 
if(Boolean.getBoolean(ans2) == false) 
    Total+=2; 
if(Boolean.getBoolean(ans3) == true) 
    Total+=2; 
if(Boolean.getBoolean(ans4) == false) 
    Total+=2; 
if(Boolean.getBoolean(ans5) == false) 
    Total+=2; 
try 
{ 
    if(Total>0)// Just a condition.. ! 
    { 
    Statement stmt=connect.createStatement(); 
    String query="INSERT INTO st1("+"seat_no,name,marks"+")VALUES('"+seat_no+"','"+name+"','"+Total+"')"; 
    stmt.executeUpdate(query); 
    stmt.close(); 
    } 
} 
catch(SQLException ex){ 
} 
response.setContentType("text/html"); 
PrintWriter out=response.getWriter(); 
out.println("<html>"); 
out.println("<head>"); 
out.println("</head>"); 
out.println("<body bgcolor=pink>"); 
out.println("<h1>"+message+"</h1>\n"); 
out.println("<h3>database updated"); 
out.println("<br>"); 
out.println("<b>"+"datbase is follows"); 
out.println("<table border=5>"); 
try 
{ 
Statement stmt=connect.createStatement(); 
String query="SELECT * FROM st1"; 
rs=stmt.executeQuery(query); 
out.println("<th>"+"seat_no"+"</th>"); 
out.println("<th>"+"name"+"</th>"); 
out.println("<th>"+"marks"+"</th>"); 

여러분의 소중한 제안을 이해할 수있을 것이다!

+0

오류를 보여주는 스택 추적을 게시하십시오. –

+0

스택 트레이스를 제공하십시오. 로그 파일에 있어야합니다. –

+0

로그가없는 MyEclipse Tomcat 6.0.13이 내장 된 MyEclipse Blue 8.6.1로 프로그램을 컴파일합니다. 그러나 던져진 예외 java.lang.NullPointerException이 \t s3.doPost (s3.java:52) \t javax.servlet.http.HttpServlet.service (HttpServlet.java:710) \t 인 javax.servlet.http.HttpServlet이다. service (HttpServlet.java:803) –

답변

0

MySQL manual에 따르면, 당신은 연결을 열하기 전에

Class.forName("com.mysql.jdbc.Driver").newInstance(); 

를 호출해야합니다. forName() 호출로 중단하고 있습니다.

+0

버전 5.0 이상의 MySQL JDBC 드라이버에는 더 이상 필요하지 않습니다. 오직 고대 예언자'org.gjt.mm.mysql.Driver'만이 필요합니다. 설명서에서는 심지어 newInstance() 호출이 깨진 드라이버 구현에 대한 해결 방법이라고 언급합니다. 나는 OP의 실제 * 문제가 다른 것에 의해 발생했다는 인상을 받았습니다. – BalusC