空指针异常
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的 --------------------编程问答--------------------
+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 开发