CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Java >  Web 开发

求助高手,对数据库操作出现问题,恳请帮忙!

楼主woaxx(草帽)2006-05-03 18:09:20 在 Java / Web 开发 提问

我做毕业设计是用jsp+struts,我在做登陆验证的时候在LogonAction里查询数据库的时候出现问题,搞不明白。  
  HTTP   Status   500   -    
   
  --------------------------------------------------------------------------------  
   
  type   Exception   report  
   
  message    
   
  description   The   server   encountered   an   internal   error   ()   that   prevented   it   from   fulfilling   this   request.  
   
  exception    
   
  javax.servlet.ServletException  
  org.apache.struts.action.RequestProcessor.processException(RequestProcessor.java:545)  
  org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:486)  
  org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:274)  
  org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482)  
  org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:525)  
  javax.servlet.http.HttpServlet.service(HttpServlet.java:709)  
  javax.servlet.http.HttpServlet.service(HttpServlet.java:802)  
   
   
  root   cause    
   
  java.lang.NullPointerException  
  com.smsystem.LogonAction.execute(LogonAction.java:41)  
  org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:484)  
  org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:274)  
  org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482)  
  org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:525)  
  javax.servlet.http.HttpServlet.service(HttpServlet.java:709)  
  javax.servlet.http.HttpServlet.service(HttpServlet.java:802)  
   
   
  note   The   full   stack   trace   of   the   root   cause   is   available   in   the   Apache   Tomcat/5.0.30   logs.  
   
   
   
   
   
  我在LogonAction里查询数据库的语句为:  
   
   
  public   ActionForward   execute(  
  ActionMapping   mapping,  
  ActionForm   form,  
  HttpServletRequest   request,  
  HttpServletResponse   response)  
  throws   Exception   {  
  LogonForm   logonForm   =   (LogonForm)   form;  
  String   username   =   logonForm.getUsername();  
  String   password   =   logonForm.getPassword();  
  String   flag=logonForm.getFlag();  
  sql_data   db   =   new   sql_data();  
  try{  
  ResultSet   rs   =   db.executeQuery("select   *   from   admin   where   AdminName='"+username+"'   and   AdminPwd='"+password+"'");  
   
   
  if(rs.next()){  
  HttpSession   session   =   request.getSession();  
  session.setAttribute("username",   username);  
  }else{  
   
  logonForm.reset(mapping,request);  
  return   (mapping.findForward("failure"));  
  }  
  }catch(SQLException   ex){  
  System.out.print("Logon   Error£º"   +   ex.getMessage());  
  }finally{  
  db.closeConn();  
  }  
   
   
   
  return   (mapping.findForward("success"));  
  }  
   
  有哪位帮我看看我到底什么地方做错了,我搞了很长时间都没搞好。恳请各位老大帮忙,在线等~~~~~ 问题点数:100、回复次数:13Top

1 楼interpb(曾曾胡,深怕情多累美人!)回复于 2006-05-03 18:15:43 得分 0

LogonAction.java:41  
   
   
  41行有空指针异常   你的41行具体是哪一句  
   
  Top

2 楼woaxx(草帽)回复于 2006-05-03 18:19:45 得分 0

41行是:  
   
  ResultSet   rs   =   db.executeQuery("select   *   from   admin   where   AdminName='"+username+"'   and   AdminPwd='"+password+"'");  
  Top

3 楼sheep219(sheep219)回复于 2006-05-03 18:23:29 得分 0

sql_data   db   =   new   sql_data();  
  try{  
  ResultSet   rs   =   db.executeQuery("select   *   from   admin   where   AdminName='"+username+"'   and   AdminPwd='"+password+"'");  
   
  你这里的db返回的是什么啊Top

4 楼sheep219(sheep219)回复于 2006-05-03 18:25:07 得分 0

最好把sql_data这个类也贴出来了。Top

5 楼interpb(曾曾胡,深怕情多累美人!)回复于 2006-05-03 18:25:49 得分 0

username  
   
  password  
   
  可能有null  
   
  把这两行加在41行前面然后试试看  
  System.out.println(password);  
  System.out.println(username);  
   
  Top

6 楼woaxx(草帽)回复于 2006-05-03 18:26:22 得分 0

下面是sql_data的代码:  
   
   
   
  package   com.smsystem;  
   
  import   java.sql.*;  
   
  public   class   sql_data   {  
  String   sDBDriver   =   "com.microsoft.jdbc.sqlserver.SQLServerDriver";  
  String   url   =  
  "jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=student";  
  //pubsΪÄãµÄÊý¾Ý¿âµÄ          
  String   user   =   "sa";  
  String   password   =   "";  
  Connection   conn   =   null;  
  Statement   stmt   =   null;  
  ResultSet   rs   =   null;  
  public   sql_data()   {  
  try   {  
  Class.forName(sDBDriver);  
  }   catch   (java.lang.ClassNotFoundException   e)   {  
  System.err.println("sql_data():   "   +   e.getMessage());  
  }  
  }  
  public   void   executeInsert(String   sql)   {  
  try   {  
  //conn   =   DriverManager.getConnection(url,user,password);  
  conn   =   DriverManager.getConnection(url,   user,   password);  
  stmt   =   conn.createStatement();  
  stmt.executeUpdate(sql);  
  stmt.close();  
  conn.close();  
  }   catch   (SQLException   ex)   {  
  System.err.println("sql_data.executeUpdate:"   +   ex.getMessage());  
  }  
  }  
  public   ResultSet   executeCount(String   sql)   {  
  try   {  
  //conn   =   DriverManager.getConnection(url,user,password);  
  conn   =   DriverManager.getConnection(url,   user,   password);  
  stmt   =  
  conn.createStatement();  
  rs   =   stmt.executeQuery(sql);  
  }   catch   (SQLException   ex)   {  
  System.err.println("sql_data.executeUpdate:"   +   ex.getMessage());  
  }  
  return   rs;  
  }  
  public   ResultSet   executeQuery(String   sql)   {  
  try   {  
  conn   =   DriverManager.getConnection(url,   user,   password);  
  stmt   =  
  conn.createStatement(  
  ResultSet.TYPE_SCROLL_SENSITIVE,  
  ResultSet.CONCUR_READ_ONLY);  
  rs   =   stmt.executeQuery(sql);  
  }   catch   (SQLException   ex)   {  
  System.err.println("sql_data.executeQuery:"   +   ex.getMessage());  
  }  
  return   rs;  
  }  
  public   void   executeUpdate(String   sql)   {  
  try   {  
  conn   =   DriverManager.getConnection(url,   user,   password);  
  stmt   =   conn.createStatement();  
  stmt.executeUpdate(sql);  
  stmt.close();  
  conn.close();  
  }   catch   (SQLException   ex)   {  
  System.err.println("aq.executeQuery:   "   +   ex.getMessage());  
  }  
  }  
  public   void   executeDelete(String   sql)   {  
  try   {  
  conn   =   DriverManager.getConnection(url,   user,   password);  
  stmt   =   conn.createStatement();  
  stmt.executeUpdate(sql);  
  stmt.close();  
  conn.close();  
  }   catch   (SQLException   ex)   {  
  System.err.println("sql_data.executeDelete:"   +   ex.getMessage());  
  }  
  }  
  public   void   closeStmt()   {  
  try   {  
  stmt.close();  
  }   catch   (SQLException   e)   {  
  e.printStackTrace();  
  }  
  }  
   
  public   void   closeConn()   {  
  try   {  
  conn.close();  
  }   catch   (SQLException   e)   {  
  e.printStackTrace();  
  }  
  }  
  }  
  Top

7 楼interpb(曾曾胡,深怕情多累美人!)回复于 2006-05-03 18:28:51 得分 0

这个数据库操作的类没有问题  
   
  也没有报异常  
   
  应该是你的loginform里面没有相对应的属性值,所以拼sql的时候抛了异常Top

8 楼woaxx(草帽)回复于 2006-05-03 18:33:54 得分 0

谢谢,那我应该怎么做?我是新手,不懂的东西太多了。Top

9 楼interpb(曾曾胡,深怕情多累美人!)回复于 2006-05-03 18:35:54 得分 0

你的登陆的jsp和ActionForm类贴出来看看吧  
  Top

10 楼woaxx(草帽)回复于 2006-05-03 18:41:59 得分 0

登陆的jsp中我就做了两个表单,一个username,一个password,action="logon.do"Top

11 楼interpb(曾曾胡,深怕情多累美人!)回复于 2006-05-03 18:43:57 得分 0

System.out.println(password);  
  System.out.println(username);  
   
  你加入这两句试试  
   
  看究竟有没有得到值  
   
  然后才能判断Top

12 楼sunday_boy2006()回复于 2006-05-04 16:52:28 得分 0

public   ActionForward   execute(  
  ActionMapping   mapping,  
  ActionForm   form,  
  HttpServletRequest   request,  
  HttpServletResponse   response)  
  throws   Exception   {  
  LogonForm   logonForm   =   (LogonForm)   form;  
  ..............  
  中的form没有初始化,试null!!!!!  
   
   
  不知道说的对不对!!!!!Top

13 楼PopKaven(岁寒)回复于 2006-05-04 19:04:18 得分 0

不知与数据库建立连接是否成功,如果没成功的话conn的值就是null,那么在你执行stmt   =   conn.createStatement();的时候就会产生NullPointException而你又没有对  
  NullPointException进行处理,所以该异常就会在41行产生。我说的这些是在与数据库建立连接不成功的情况下出现。不知道你的是否这样。Top

相关问题

关键词

得分解答快速导航

  • 帖主:woaxx

相关链接

  • CSDN Java频道
  • Java类图书
  • Java类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo