NullPointerException就是有些变量的值为空。

解决方案 »

  1.   

    你在哪里用了res.getString?????
      

  2.   

    你在哪里用了res.getString?????
    代码都贴上来了???
      

  3.   

    to:sun1979song(十步杀一人) 
    下面就是我用res.getString的代码
    <td width="11%" height="14"> 
                <div align="center"><%=res.getString("OPERATOR")%></div>
              </td>
              <td width="10%" height="14"> 
                <div align="center"><%=res.getString("OPERATION")%></div>
              </td>
              <td width="11%" height="14"> 
                <div align="center"><%=res.getString("LOGTIME")%></div>
          </td>
      

  4.   

    估计当初插入数据库的时候,插入的是空值,或者不是空值而是空格,,在执行数据库操作的时候,,要处理好插入空值的情况,,转换为null插入
      

  5.   

    jsp里面不能对同一个数据库字段取两次
    你应该先取出来,再多次使用,String oper=res.getString("OPERATOR")
      

  6.   

    to:adijava(阿迪)  
    数据库中没插入空值to:freefalcon(心宇) 
    我没有对同一个数据库字段取两次
      

  7.   

    那就是没有这个字段
    (名称写错)
    换成数字试试:
    String oper=res.getString(1);
    或者字段类型不符(不是字符型)
      

  8.   

    to:zxhong(红) 
    有啊,换成数字也没用
      

  9.   

    不是吧?还没解决啊?
    你用游标的时候是不是先next了一下?
    用getString取不出值来是不会抛空指针的。
      

  10.   

    可能你的res为空
    res=condb.executeQuery(sql);
    while(res.next()){
       String txt1 = res.getString("OPERATOR");
       String txt2 = res.getString("OPERATION");
       String txt3 = res.getString("LOGTIME");
    }
      

  11.   

    我也认为res为空,能不能帮我看看为什么取不出值?
    SQL语句有错吗?
      

  12.   

    to :sun1979song(十步杀一人) 
    是啊,还没解决,请你帮忙啊
    我的代码都在上面,我什么时候NEXT了?
      

  13.   

    哦?
    那就是没有满足条件的记录
    加:
    while(res.next())
    {}
      

  14.   

    正如hazeline(砸死我) 所说的,取结果集的时候应该是先判断游标是否是在结果集内
    把你的程序改成:
    <%
    while(res.next()){
    %>
    <td width="11%" height="14"> 
                <div align="center"><%=res.getString("OPERATOR")%></div>
              </td>
              <td width="10%" height="14"> 
                <div align="center"><%=res.getString("OPERATION")%></div>
              </td>
              <td width="11%" height="14"> 
                <div align="center"><%=res.getString("LOGTIME")%></div>
          </td>
    <%
    }
    %>
      

  15.   

    NullPointerException是空指针的错误
    这个错误很常见
    你搜索一下论坛就可以发现很多这方面的问题和答案的
      

  16.   

    你程序里用结果集的地方你都要改一下,游标是在结果集之外的,要先往下移动一次,才能用。要不肯定要抛空指针了。
    sql="select count(*) as count1 from t_syslog";
    用select count 肯定有结果集,可以不判断。养成习惯,最好是先判断,后取。
    res=condb.executeQuery(sql);
    if(res.next()){
    total_page=res.getInt(1);
    }
      

  17.   

    to:sun1979song(十步杀一人) 
    我已经把我用结果集的地方都改了,还是一样抛空指针
      

  18.   

    抛空指针的地方肯定是你对一个null对象进行句柄操作的时候出来的,或者是把一个空对象设到一个不能为空的容器里。
    在你的代码里,只用到了句柄操作,而且地方也不多,
    你的连接是怎么取的?statment是怎么来的?
      

  19.   

    Only one ResultSet object per Statement object can be open at any point in time. Therefore, if the reading of one ResultSet object is interleaved with the reading of another, each must have been generated by different Statement objects. All statement execute methods implicitly close a statment's current ResultSet object if an open one exists.
    你取res2的时候已经把res1关掉了。
    Therefore, if the reading of one ResultSet object is interleaved with the reading of another, each must have been generated by different Statement objects.
    用两个Statement来取两个结果集。
      

  20.   

    刚才的贴错了代码 应该是这个
    <%@page contentType="text/html;charset=gb2312"%>
    <%@page import="java.sql.*"%>
    <%@page import="java.lang.*"%>
    <html>
    <head>
    <title>维捷宽带计费系统 WJ-ECFS</title>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
    <link rel="stylesheet" href="/ecfs.css"  type="text/css">
    </head><body bgcolor="#FFFFFF" text="#000000" background="/images/bg.jpg" leftmargin="0" topmargin="0" marginwidth="0" marginheight="0">
    <div align="center">
      <p><font color="#3399CC" face="黑体">系统日志列表</font></p>
      <table width="584" border="1" cellspacing="0" cellpadding="0" bgcolor="#c8e8ff" bordercolor="#FFFFFF">
        <jsp:useBean id="condb" class="bean.dbbean"/>
        <jsp:useBean id="chn" class="bean.chn"/>
        <%
        String txt1="",txt2="",txt3="";
        int pages=0;
        int pagesize=10;
        ResultSet res;
        String pages_str=request.getParameter("pages");
        if(pages_str==null)
        {
           pages_str="0";
        }
        pages=new Integer(pages_str).intValue();
        String bottom,top,sql="";
        int total_page=0,pages_count=0,mode=0;
        bottom=String.valueOf(pages*pagesize+1);
        top=String.valueOf(pages*pagesize+pagesize);
        if(pages==-1)
        {
            sql="select count(*) as count1 from t_syslog";
            res=condb.executeQuery(sql);
            if(res.next()){
            total_page=res.getInt(1);
            }        
            pages_count=(int)total_page/pagesize;
         mode=total_page%10;
         int id_temp=pages_count*pagesize+1;
         sql="select * from t_syslog where id>="+id_temp;
        }
        else
        {
         sql="select * from t_syslog where id>="+bottom+" and id<="+top;
        }
        res=condb.executeQuery(sql);
        String space="&nbsp;&nbsp;&nbsp;";
        String N_url="<a href=/jsp/system/syslog.jsp?pages="+(pages+1)+">";
        String P_url="<a href=/jsp/system/syslog.jsp?pages="+(pages-1)+">";
        String url1="</a>",last="<a href=/jsp/system/syslog.jsp?pages=-1>";
        String first="<a href=/jsp/system/syslog.jsp?pages=0>";
        if(pages==0){
        out.print(N_url+chn.strtochn("下一页")+url1+space);
        out.print(last+chn.strtochn("最后一页")+url1);
        }
        if(pages==-1){ 
        out.print(first+chn.strtochn("第一页")+url1+space);
        int pages_count_temp=pages_count-1;
        P_url="<a href=/jsp/system/syslog.jsp?pages="+pages_count_temp+">";
        out.print(P_url+chn.strtochn("上一页")+url1);
        }
        if(pages>0){
        out.print(first+chn.strtochn("第一页")+url1+space);
        out.print(P_url+chn.strtochn("上一页")+url1+space);
        out.print(N_url+chn.strtochn("下一页")+url1+space);
        out.print(last+chn.strtochn("最后一页")+url1);
        }
        %>
        <tr> 
              <td width="11%" align=center bgcolor="#3399CC"><font color="#FFFFFF">操作者</font></td>
              <td width="10%" align=center bgcolor="#3399CC"><font color="#FFFFFF">操作内容</font></td>
              <td width="11%" align=center bgcolor="#3399CC"><font color="#FFFFFF">操作时间</font></td>
        </tr>
       <% while(res.next()){
       txt1 = res.getString("OPERATOR");
       txt2 = res.getString("OPERATION");
        txt3 = res.getString("LOGTIME");
       }
       %>
        <tr>
          <td width="11%" height="14"> 
                <div align="center"><%=txt1%></div>
              </td>
              <td width="10%" height="14"> 
                <div align="center"><%=txt2%></div>
              </td>
              <td width="11%" height="14"> 
                <div align="center"><%=txt3%></div>
          </td>
        </tr>
      </table>
      <p>&nbsp;</p>
    </div>
    </body>
    </html>
      

  21.   

    我实在是看不出来了,你可以把代码先去掉一部分,只连数据库,取结果集,不输出,看能不能编译过去。
    一点建议,为什么你取连接可以用javabean来实现,具体的查询还要在页面上做呢?直接在jsp里操作数据库是比较忌讳的。
      

  22.   

    sql="select * from t_syslog where id>=1 and id<=10";  
    这个sql语句对吗?
      

  23.   

    你用的bean,condb在其他的jsp里能取到连接吗?
      

  24.   

    可以啊  不能连的话会提示其他错误的
    我已经简化到最小了 还是抛空指针错误
     <jsp:useBean id="condb" class="bean.dbbean"/>
        <%
        String txt1="",txt2="",txt3=""; 
        ResultSet res;   
        String sql="";     
        sql="select * from t_syslog where id>=1 and id<=10";  
        res=condb.executeQuery(sql);
        while(res.next()){
           txt1 = res.getString("OPERATOR");
           txt2 = res.getString("OPERATION");
           txt3 = res.getString("LOGTIME");
        }
        %>
      

  25.   

    <jsp:useBean id="condb" class="bean.dbbean"/>
        <%
        String txt1="",txt2="",txt3=""; 
        ResultSet res;   
        String sql="";     
        sql="select * from t_syslog where id>=1 and id<=10";  
        out.print(condb);
        %>
    看看是什么。
      

  26.   

    输出是 :bean.dbbean@c272bc
    @后面的每点一次变一次 
    这是什么?
      

  27.   

    <jsp:useBean id="condb" class="bean.dbbean"/>
        <%
        String txt1="",txt2="",txt3=""; 
        ResultSet res;   
        String sql="";     
        sql="select * from t_syslog where id>=1 and id<=10";  
        out.print(condb.executeQuery("sql"));
        %>
    结果输出NULL,为什么会这样?
      

  28.   

    bean没错啊 我贴出来你看看 其他的页面用的挺好的
    package bean;/**
     * Title:
     * Description:
     * Copyright:    Copyright (c) 2000
     * Company:
     * @author
     * @version 1.0
     */
    import java.sql.*;
    import java.lang.*;public class dbbean {
       String sDBDriver = "org.gjt.mm.mysql.Driver";
       String sConnStr = "jdbc:mysql://localhost:3306/AAA?user=root;password=";
       Connection Conn;   
       Statement  Stmt;
       ResultSet rs;
       boolean isright=false;
       
       public dbbean() {
         }   public Connection connectdb(){
           try{
              Class.forName(sDBDriver);    
              Conn = DriverManager.getConnection(sConnStr);         
              
       }
       catch(java.lang.ClassNotFoundException e)  {
    System.err.println("Database Error: " + e.getMessage());
    }
         catch(SQLException e){}
         return Conn;
       }
     
      public ResultSet executeQuery(String sql) {
       rs = null;
            try {
             Conn = DriverManager.getConnection(sConnStr);
             Stmt=Conn.createStatement();
             rs = Stmt.executeQuery(sql);
            }
            catch(SQLException ex) {
       System.err.println("executeQuery Error: " + ex.getMessage());
            }
            return rs;
        }
        
      public boolean executeUpdate(String sql) {           
            try {
             Conn = DriverManager.getConnection(sConnStr);
             Stmt=Conn.createStatement();
             Stmt.executeUpdate(sql);
             isright=true;
               }
            catch(SQLException ex) {
       System.err.println("executeUpdate Error: " + ex.getMessage());
     isright=false;  
       
            }        
            return isright;
        }   
      
    }
      

  29.   

    那应该是出了sql异常,你的id是整型的?
      

  30.   

    不是  书上这样写的:进行分页的WHRER语句如下:
    Where id》=页的开头记录数 and id《=页的结束记录数
      

  31.   

    维捷宽带计费系统 WJ-ECFS
    天!~~ 这样的人来做计费系统 。都不知道isp找的什么人啊????老大,拜托,问问同事,或者买本书。
    真的无法想象。
    网上找点代码就开用。也不分析别人结构是否完整,安全性如何,有没有内存泄漏。
    conn也不关闭,不知道在做什么!!!!!!!!!!!!
    郁闷的贴子
    :(
      

  32.   

    这应该是你的SQL错误,在SQL里逐一写出要取出的字段是个好习惯,在getString()时按顺序来取,就不会错了.
    试一这个 <jsp:useBean id="condb" class="bean.dbbean"/>
        <%
        String txt1,txt2,txt3; 
        ResultSet res;   
        String sql=;    
        txt1=null;
        txt2=null;
        txt3=null;
        sql=null;
        sql="select 字段1,字段2.... from t_syslog where rownum <= 10";  
        res=condb.executeQuery(sql);
        while(res.next()){
           txt1 = res.getString(1);
           txt2 = res.getString(2);
           txt3 = res.getString(3);
           //输出取到的字段,看一下有没有空值;
           out.print("|"+txt1+"|<br>");
           out.print("|"+txt2+"|<br>");
           out.print("|"+txt3+"|<br>");
        }
        %>最后,在SQLPLUS里试一试你的SQL:select * from t_syslog where id>=1 and id<=10,看一下能不能运行.