conn.Conect();
   ResultSet results=conn.query("select * from member where memberid=1159");
   cols=conn.getcols();%>
   <table border="1">
   <%while(results.next()) {%>
   <tr>
   <td>
                  <%
             
                    try{ 

 out.print(results.getString("username"));
 out.print(results.getString("memberid"));

                
                     //捕获空值时产生的异常
                        }
 catch(NullPointerException e){
                     }%>
</td>     
             
             </tr> 
            <%  out.print("<br>"); 
           }%>
</table>
 <%conn.closeconn();
以上是jsp代码!为什么我这两句out.print(results.getString("username"));
         out.print(results.getString("memberid"));
必须要删掉一句才行,否则就会提data not found的错误,也就是我只能输出每条记录中的一个字段值.

解决方案 »

  1.   

    你的memberid是整型变量吧,如果那样就得写成out.print(results.getInt("memberid"))了。
      

  2.   

    不对,我去掉这一句out.print(results.getString("username")); 
    那么这一句out.print(results.getString("memberid"));的值就可以正常输出. 
      

  3.   

    你这句话里面做了什么cols=conn.getcols();
      

  4.   

    我也想问,还有你的username字段里是不是NULL值
      

  5.   

    你使用catch(Exception e)吧
    看一下捕获到了什么异常没有,
    在catch里面打印一下异常信息.
      

  6.   

    你的username和memberid的字段是什么?都是string的吗
      

  7.   

    建议你把SQL换成下面语句试试
    select NVL(username,' ') username,nvl(memberid,' ') memberid from member where memberid=1159
      

  8.   

     getcols方法:public int getcols(){return this.cols;}
              cols属性是这样得到的:
              this.myResults = myStmt.executeQuery("select * from babytemplate where id="+babyid);
                  //首先得到查询结果的信息
                ResultSetMetaData resultsMetaData = myResults.getMetaData();
                      //得到记录的条数
       this.cols = resultsMetaData.getColumnCount();
    现在我把代码改成这样就可以了:
                out.print(results.getString(1));
        out.print(results.getString(2));而且顺序不能调换,假如改成这样就又不行了:
                 out.print(results.getString(2));
         out.print(results.getString(1));
     
    很怪,望各位高手帮我解释一下!
      

  9.   

    从results读取结果时确实有一个顺序的问题。应该按从左到右的顺序读取每行中的结果集列。sun在设计这个地方时就是这样的,据说为了提高执行效率。