为什么会报空指针异常?
用DB类封装了数据库的连接操作,执行stat=dbcon.prepareStatement("select*fromuserwhereu_name=?andpwd=?")...
用DB类封装了数据库的连接操作,执行stat = dbcon.prepareStatement("select * from user where u_name=? and pwd=?");时报空指针异常
public class RegistorForm extends HttpServlet {
Connection dbcon;
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, java.io.IOException {
DB db=new DB();
dbcon=db.getCon();
resp.setContentType("text/html");
PrintWriter out = resp.getWriter();
String firstname = req.getParameter("username").trim();
String lastname = req.getParameter("pass").trim();
System.out.println(firstname+lastname);
PreparedStatement stat;
try {
stat = dbcon.prepareStatement("select * from user where u_name=? and pwd=?");
stat.setString(1, firstname);
stat.setString(2, lastname);
ResultSet rows = stat.executeQuery();
if (!rows.next()) {
PreparedStatement stat2;
stat2 = dbcon
.prepareStatement("insert into user(u_name,pwd) values (?,?)");
stat2.setString(1, firstname);
stat2.setString(2, lastname);
int result = stat2.executeUpdate();
if(result==1)
System.out.println("注册成功");
} else {
System.out.println("用户名重复");
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} 展开
public class RegistorForm extends HttpServlet {
Connection dbcon;
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, java.io.IOException {
DB db=new DB();
dbcon=db.getCon();
resp.setContentType("text/html");
PrintWriter out = resp.getWriter();
String firstname = req.getParameter("username").trim();
String lastname = req.getParameter("pass").trim();
System.out.println(firstname+lastname);
PreparedStatement stat;
try {
stat = dbcon.prepareStatement("select * from user where u_name=? and pwd=?");
stat.setString(1, firstname);
stat.setString(2, lastname);
ResultSet rows = stat.executeQuery();
if (!rows.next()) {
PreparedStatement stat2;
stat2 = dbcon
.prepareStatement("insert into user(u_name,pwd) values (?,?)");
stat2.setString(1, firstname);
stat2.setString(2, lastname);
int result = stat2.executeUpdate();
if(result==1)
System.out.println("注册成功");
} else {
System.out.println("用户名重复");
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} 展开
4个回答
推荐于2017-09-29 · 知道合伙人教育行家
关注
展开全部
1.所谓的指针,就是java中的对象的引用。比如String s;这个s就是指针。
2.所谓的空指针,就是指针的内容为空,比如上面的s,如果令它指向null,就是空指针。
3.所谓的空指针异常,就是一个指针是空指针,你还要去操作它,既然它指向的是空对象,它就不能使用这个对象的方法。比如上面的s假如为null,你还要用s的方法,比如s.equals( String x);那么就会产生空指针异常。
2.所谓的空指针,就是指针的内容为空,比如上面的s,如果令它指向null,就是空指针。
3.所谓的空指针异常,就是一个指针是空指针,你还要去操作它,既然它指向的是空对象,它就不能使用这个对象的方法。比如上面的s假如为null,你还要用s的方法,比如s.equals( String x);那么就会产生空指针异常。
展开全部
确认定位到哪一行空指针错误。
一般都是对象为空时,取值/设置值 时报错。
一般都是对象为空时,取值/设置值 时报错。
追问
就是stat访问不到
追答
没有操作只是声明。
改一下。在异常抓取内部使用。
//PreparedStatement stat;//删除此行
try {
PreparedStatement stat = dbcon.prepareStatement("select * from user where u_name=? and pwd=?");
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
如果确实是定位到了这一行,空指针错误应该只会是dbcon为null
设个断点或者print看一下吧
设个断点或者print看一下吧
追问
报的错是:
严重: Servlet.service() for servlet [RegistorForm] in context with path [/bbs] threw exception
java.lang.NullPointerException
at servlet.RegistorForm.doPost(RegistorForm.java:27)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
眨眼一看user是个关键字
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询