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

NullPointerException空指针异常,两天了都没搞定,不知道是怎么产生的哦~~

楼主helen2546(约等于)2005-06-03 15:45:28 在 Java / Web 开发 提问

这个问题我整整搞了两天,方法试了很多,资料也查了一些,可还是不知道自己的错误出在哪里,在这里贴出相关代码来,请高人指点一下啦~~  
   
  import   java.io.*;  
  import   java.sql.*;  
  import   java.lang.*;  
  import   javax.servlet.*;  
  import   javax.servlet.http.*;  
  import   course.course;  
   
  public   class   CourseSvlt   extends   HttpServlet{  
   
  public   void   doGet(HttpServletRequest   req,   HttpServletResponse   res)  
          throws   ServletException,   IOException   {  
          String   cour_id   =req.getParameter("cour_id");  
           
          String   action   =   action   =   req.getParameter("action");  
          course   cour   =   null;  
          String   message="";  
          int   refer=0;  
           
   
   
   
          if   ("refertea".equalsIgnoreCase(action))   {  
  String   tea_name=new   String(req.getParameter("tea_name").getBytes("ISO8859_1"));  
                   
                    refer=doRefertea(req,res,cour_id,tea_name);  
   
  if(refer==-1){  
  doError(req,res,"指定教师失败,该教师还未注册,请先为该教师注册!");  
  }  
  else   if(refer==0){  
                    String   tid=cour.getTea_id();  
  doError(req,res,"指定教师"+tid+"失败,更新数据库有误!!!Rows   affected:   "   +   refer);  
  }  
   
  else{  
          res.sendRedirect("http://localhost:8080/yjs/getcourse.jsp");  
  }  
   
            }  
       
   
  public   int   doRefertea(HttpServletRequest   req,HttpServletResponse   res,String                         cour_id,String   tea_name)  
                            throws   ServletException,IOException{  
          course   cour=new   course();  
          int   num=0;  
          num=cour.refertea(cour_id,tea_name);  
   
          return   num;  
        }  
  }  
   
   
   
  package   course;  
  import   java.sql.*;  
  import   sqlbean.sqlBean;  
  public   class   course   {      
   
      private   String   tea_id;  
      private   String   tea_name;  
      public   void   setTea_id(String   s){  
        this.tea_id=s;  
        }  
      public   String   getTea_id(){return   tea_id;}  
        public   void   setTea_name(String   s){  
        this.tea_name=s;  
        }  
      public   String   getTea_name(){return   tea_name;}  
         
   
        public   ResultSet   getTea_name(String   tea_id){//由教师编号得到教师名字  
  String   sql="select   name   as   tea_name   from   teacher   where   id='"+tea_id+"'";  
  sqlBean   db   =   new   sqlBean();  
  ResultSet   rs   =   db.executeQuery(sql);  
  return   rs;  
        }  
   
        public   ResultSet   getTea_id(String   tea_name){//由教师名字得到教师编号  
   
                    String   sql="select   id   as   tea_id   from   teacher   where   name='"+tea_name+"'";  
                    sqlBean   db   =   new   sqlBean();  
  ResultSet   rs   =   db.executeQuery(sql);  
  return   rs;  
        }  
   
        public   int   refertea(String   cour_id,String   tea_name){//指定任课教师  
  String   tid=null;  
  int   num;  
  ResultSet   rs=getTea_id(tea_name);  
  try{  
                if(rs.next()){  
    tid=rs.getString("tea_id");  
    setTea_id(tid);  
  }  
  }  
  catch(SQLException   e){System.out.print(e.toString());}  
                    if(tea_id.equals(null)){  
  num=-1;  
  return   num;  
  }  
   
  else{  
   
  String   sql="update   specialty   "+  
      "set   tea_id='"+tea_id+"'   "+  
      "where   cour_id='"+cour_id+"'";  
                                      sqlBean   db   =   new   sqlBean();  
                                      num=db.executeInsert(sql);  
                                      return   num;  
  }  
   
      }  
  }  
   
       
  问题点数:60、回复次数:16Top

1 楼kingofhawks(蓝鹰)回复于 2005-06-03 15:52:19 得分 0

不会单步调试一下啊,都不知道你是哪里出exception,你让人家怎么帮你看嘛,把你的Exception贴上来,代码太长了.Top

2 楼helen2546(约等于)回复于 2005-06-03 15:53:02 得分 0

哦,异常是在doError(req,res,"指定教师"+tid+"失败,更新数据库有误!!!Rows   affected:   "   +   refer);上面一行:String   tid=cour.getTea_id();抛出的。  
  如果没有这一行,把tid变成tea_name,则会更新数据库失败。sql语句在查询分析器里就可以执行,不过要把tea_id直接用数据库中的数据代替。那么这里应该是得到的tea_id不正确,是不是course类的set,get方法用的不对啊,我是新手,希望前辈们耐心点帮我看看,指点一下:(  
   
  Top

3 楼lzl123(每天解决三个问题)回复于 2005-06-03 16:03:32 得分 0

你的cour变量从声明到使用有赋值吗?我怎么看到Course   cour   =   null;然后就是String   tid=cour.getTea_id();Top

4 楼xu_xinyu(雪候鸟)回复于 2005-06-03 16:08:53 得分 0

异常信息里会告诉你在那一行出的这个问题。  
   
  找一找。Top

5 楼jackwin(想过更好的生活!!)回复于 2005-06-03 16:10:07 得分 0

course   cour   =   null;<---你干吗?  
  course   cour   =   new   course()<---这样才对吧?   你的doRefertea里不是已经写对的吗?  
   
  看下面两句  
  String   tid=cour.getTea_id();  
  doError(req,res,"指定教师"+tid+"失败,更新数据库有误!!!Rows   affected:   "   +   refer);  
  这两句前好像没有给  
  tea_id   任何值...  
   
  String   tid=cour.getTea_id();<---你这时好像没给private   String   tea_id;<---好像只定义没付值..  
  public   String   getTea_id(){return   tea_id;}<---你返回一个空值了....Top

6 楼helen2546(约等于)回复于 2005-06-03 16:13:45 得分 0

可是我的course类中的refertea方法中有用setTea_id(tid);给tea_id赋值啊。。。Top

7 楼helen2546(约等于)回复于 2005-06-03 16:20:06 得分 0

还有,我先调用的doRefertea,所以course   cour=null应该没影响的吧,我是按照书上说的,对象要先赋空值吗不是。  
  还有“能声明空对象的尽量声明空对象,不要图省事用null代替。”这句话有点不明白哦,声名空对象不就是得用null吗?  
  Top

8 楼jackwin(想过更好的生活!!)回复于 2005-06-03 16:20:06 得分 0

public   int   doRefertea(HttpServletRequest   req,HttpServletResponse   res,String                         cour_id,String   tea_name)  
                            throws   ServletException,IOException{  
          course   cour=new   course();  
          int   num=0;  
          num=cour.refertea(cour_id,tea_name);  
   
          return   num;  
        }  
  }  
  你在这里赋值?晕不行D这个course   cour=new   course();只有效于doRefertea里..Top

9 楼jackwin(想过更好的生活!!)回复于 2005-06-03 16:20:12 得分 0

public   int   doRefertea(HttpServletRequest   req,HttpServletResponse   res,String                         cour_id,String   tea_name)  
                            throws   ServletException,IOException{  
          course   cour=new   course();  
          int   num=0;  
          num=cour.refertea(cour_id,tea_name);  
   
          return   num;  
        }  
  }  
  你在这里赋值?晕不行D这个course   cour=new   course();只有效于doRefertea里..Top

10 楼jackwin(想过更好的生活!!)回复于 2005-06-03 16:25:27 得分 0

public   int   doRefertea(HttpServletRequest   req,HttpServletResponse   res,String                         cour_id,String   tea_name)  
                            throws   ServletException,IOException{  
          course   cour=new   course();  
          int   num=0;  
          num=cour.refertea(cour_id,tea_name);  
          this.cour.setTea_id(cour.getTea_id());<---这样试试  
          return   num;  
        }  
  }Top

11 楼helen2546(约等于)回复于 2005-06-03 16:29:51 得分 0

啊!jackwin(想过更好的生活!!):多谢多谢~  
  我也怀疑来着,终于可以确定问题是出在这里了!!!  
  可是,能不能说的详细点呢?  
  我该怎么做呢?  
  将返回类型改为course类型吗?我试试去~Top

12 楼jackwin(想过更好的生活!!)回复于 2005-06-03 16:37:20 得分 0

不好意思我的也错了Top

13 楼jackwin(想过更好的生活!!)回复于 2005-06-03 16:40:24 得分 60

public   class   CourseSvlt   extends   HttpServlet{  
   
          course   cour   =   null;<---使用我的方法要将这定义在此  
   
  public   void   doGet(HttpServletRequest   req,   HttpServletResponse   res)  
          throws   ServletException,   IOException   {  
          String   cour_id   =req.getParameter("cour_id");  
          //course   cour   =   null;<--这个无需  
          String   action   =   action   =   req.getParameter("action");  
          String   message="";  
          int   refer=0;  
   
  那么你的doRefertea里也可以这样改  
   
  public   int   doRefertea(HttpServletRequest   req,HttpServletResponse   res,String                         cour_id,String   tea_name)  
                            throws   ServletException,IOException{  
          //course   cour=new   course();<--可以不用了  
          int   num=0;  
          num=cour.refertea(cour_id,tea_name);  
          return   num;  
        }  
  }  
  Top

14 楼helen2546(约等于)回复于 2005-06-03 16:41:57 得分 0

我把     String   tid=cour.getTea_id();   这句注释掉了,下面那行也改成   doError(req,res,"指定教师失败,更新数据库有误!!!Rows   affected:   "   +   refer);   了。  
  可是运行就会转到错误页面了,显示:指定教师失败,更新数据库有误!!!Rows   affected:0  
   
  这应该是refertea方法中的问题了吧,再帮我看下吧,我看不出什么问题啊:(  
   
  Top

15 楼jackwin(想过更好的生活!!)回复于 2005-06-03 17:09:05 得分 0

if(tea_id.equals(null)){<---问题应该出这里了吧...忘记了equals不知道能不能比较null的变量,你这样的比较可能问题很多我给个我写的函数你see   see  
  public   boolean   EmptyStr(String   s)   {//测试是否空字符或者null字符  
  try   {  
  if   (s   !=   null   &&   (s.trim()).length()   !=   0)  
  return   true;  
  else  
  return   false;  
  }   catch   (Exception   e)   {  
  return   false;  
  }  
  }  
   
  Top

16 楼fu80008(福子)回复于 2005-06-06 17:37:59 得分 0

告诉你吧?是找不到文件!Top

相关问题

  • 怎老是空指针异常??
  • 用StrutsTestCase测试struts Action时,报空指针异常?
  • 字符串指针free异常的问题
  • 大伙帮我看看空指针异常
  • 如何捕获空指针引发的异常?
  • servlet中RequestDispatcher.forward总是出现空指针异常
  • 有高手对空指针错有研究吗(197分~~~)NullPointerException
  • 帮我看一下空指针(NullPointerException)在那里出现?
  • Jsp的问题,NullPointerException,空指针如何解决?
  • NullPointerException 空指针的解决方法有哪些

关键词

  • 数据库
  • null
  • cour
  • tea
  • course
  • req
  • 教师
  • tid
  • getparameter
  • refer

得分解答快速导航

  • 帖主:helen2546
  • jackwin

相关链接

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

广告也精彩

反馈

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