我用这个语句查询select top 5 * from b1 where id not in(select top 1 id from b1)取出来的记录却是6条,
最后一条为异常
怎么回事啊?请帮帮我!
try{
ResultSet rs=Conn.strSql("select top 5 * from b1 where id not in(select top 1 id from b1)");
while(rs.next()){
for(int i=1;i<=rs.getMetaData().getColumnCount();i++){
     System.out.print(rs.getString(i)+"\t");
    }
    System.out.println();
}
Conn.close();
}catch(SQLException e){
System.out.println("SQL ERROR:"+e.getMessage());
}

解决方案 »

  1.   

    只有5条~~你却要去取第6条是肯定会报异常的,你可以把异常贴出来看看
    select top 5 * from b1 where id not in(select top 1 id from b1)取出来的记录却是6条,
    LZ有没有放在SQL环境下执行过,还是在JAVA里判断,应该是5条
      你的异常估计和你的rs.getString(i)中的i值有关
      

  2.   

    for(int i=1;i<=rs.getMetaData().getColumnCount();i++){
    这句i是不是应该从0开始啊
      

  3.   

    我是打算取5条的,结果显示时却是6条,实行结果的图在http://old.photo.qq.com/?file=BBBB3E8AEEACD4A6285BEDC758D3C40FA923F4560E90B1B2D8F580DE068F2EDD
    我只有access和vf,在vf下语法错误,我晕
      

  4.   

    1. 你没有把真实的异常信息贴出来,不能信你的一面之词。
    2. System.out.print(rs.getString(i)+"\t");
       这句话,你能保证你的表的字段都是字符型?
      

  5.   

    你的异常估计和你的rs.getString(i)中的i值有关
      

  6.   

    while(rs.next()&&rs!=null){
    ....}
      

  7.   

    while(rs.next()&&rs!=null)也不行rs.getString(i)换成rs.getString(1)也不对真实的异常信息,怎么看到??怎么写??