当前位置:编程学习 > JAVA >>

空指针异常

HTTP Status 500 - 

--------------------------------------------------------------------------------

type Exception report

message 

description The server encountered an internal error () that prevented it from fulfilling this request.

exception 

java.lang.NullPointerException
sql.db.query(db.java:33)
servlet.login.doGet(login.java:36)
javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)


note The full stack trace of the root cause is available in the Apache Tomcat/6.0.32 logs.


package sql;

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

public class db {
private Connection conn=null;
private  Statement stat=null;
private  ResultSet rs=null;
   public  void dbconnect(){
   String url="jdbc:mysql://localhost:3306/text";
String user="root";
String psd="root";
try {
Class.forName("com.mysql.jdbc.Driver");
    conn = DriverManager.getConnection(url, user, psd);
    stat = conn.createStatement();
} catch (Exception e) {
e.printStackTrace();
}
  
     }
   public ResultSet query(String sql)
{
if(sql==null||sql.equals(""))
{
return null;
}
try {
rs = stat.executeQuery(sql);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return rs;
}

   public void close(){
   if(rs!=null){
   rs=null;
   try {
rs.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
   }
   if(stat!=null){
   stat=null;
   try {
stat.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
   } if(conn!=null){
   conn=null;
   try {
conn.close();
} catch (SQLException e) {

e.printStackTrace();
}
   }
   }
}
package db;
import java.sql.Connection;
import java.sql.Statement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.DriverManager;
import java.io.*;
public class DB {
private Connection conn=null;
private Statement stat=null;
    public ResultSet rs=null;

public void connectMySQL() 
{
String url="jdbc:mysql://localhost:3306/drivingschool";
String user="root";
String psd="root";
try {
Class.forName("com.mysql.jdbc.Driver");
    conn = DriverManager.getConnection(url, user, psd);
    stat = conn.createStatement();
} catch (Exception e) {
e.printStackTrace();
}
}


public ResultSet query(String sql) throws SQLException
{
if(sql==null||sql.equals(""))
{
return null;
}
rs = stat.executeQuery(sql);
return rs;
}

public int update(String sql) throws SQLException
{
int i;
if(sql==null||sql.equals(""))
{
return 0;
}
i=stat.executeUpdate(sql);
return i;
}

public ResultSet executeSQL(String sql) throws SQLException{

boolean t;
if(sql==null||sql.equals(""))
{
return null;
}
t=stat.execute(sql);
if(t){
rs = stat.getResultSet();
return rs;
}
else{
return null;
}
}

public void closeDB() throws SQLException
{
if(rs!=null)
{
rs.close();
rs=null;
}
if(stat!=null)
{
stat.close();
stat=null;
}
if(conn!=null)
{
conn.close();
conn=null;
}
}

}
怎么解决啊,这个错误 --------------------编程问答-------------------- java.lang.NullPointerException
sql.db.query(db.java:33)
servlet.login.doGet(login.java:36)

 自己调试下。这么容易定位的问题。 --------------------编程问答-------------------- String s=null;
s.属性名
所以跑出了空指针的错误!自己看看你输出来的数据有没有null呀!
--------------------编程问答-------------------- 每天回帖即可获得10分可用分 --------------------编程问答-------------------- login.java:36

在这个java文件的36行,好好看看吧。 --------------------编程问答-------------------- Debug --------------------编程问答-------------------- Debug --------------------编程问答--------------------   注意大点的对象。 --------------------编程问答-------------------- sql.db.query(db.java:33)自己跟踪看看 --------------------编程问答-------------------- 楼主看看你的变量stat没有获取到指针? --------------------编程问答-------------------- 调用query前是不是需要调用dbconnect,否则stat应该是为null的 --------------------编程问答--------------------
引用 10 楼 anhy 的回复:
调用query前是不是需要调用dbconnect,否则stat应该是为null的

+1 --------------------编程问答-------------------- 在之前调用了,dbconnect,只是都是conn、stat、rs还是为空,其他数据一样连都上了 --------------------编程问答-------------------- servlet.login.doGet(login.java:36)
这的位置好好看看  自己调试一下就出来了 。 --------------------编程问答-------------------- login.java:36 用断点调试吧 --------------------编程问答-------------------- public void close(){
if(rs!=null){
rs=null;
try {
rs.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if(stat!=null){
stat=null;
try {
stat.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} if(conn!=null){
conn=null;
try {
conn.close();

你的close() 方法扯蛋了吧  去掉你方法中的rs=null;stat=null; --------------------编程问答--------------------     req.setCharacterEncoding("UTF-8");
HttpSession session=req.getSession();
String code=(String)session.getAttribute("checkCode");
String codes=req.getParameter("veryCode");
String id=req.getParameter("userName");
String pwd=req.getParameter("passWord");
userName是JSP页面中一个文本框的名字,但是利用request获取的却是乱码。。。
头都大了,请各位大虾帮忙解决下
补充:Java ,  Web 开发
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,