是啊, 就是 rs.getString("news_id") 。 news_id 是 news 中的一个字段

解决方案 »

  1.   

    请检查sql语句,是错误的,主语不能接子查询
      

  2.   

    应该是游标的问题.你把游标设为scroll-insensitive和scroll-sensitive试试看.
    因为,默认的游标是只向前游标.
    所以,你只要把两句getString语句的顺序颠倒一下就应该不会出错了.JDBC2.1核心API提供三种结果集类型:forward-only, scroll-insensitive和scroll-sensitive。
    forward-only:仅向前型。如果你仅需要前向顺序滚动结果集中的所有行,仅向前游标能提供极高的性能;然而它不能从第一行上直接滚动到最后一行,也不能从最后一行滚到第一行。
    scroll-insensitive:滚动不敏感型。对于要求较高处理级别的应用来说,滚动不敏感型结果集是一个理想的选择,它支持向前和向后的记录集滚动。滚动不敏感型结果集的第一次请求是从数据库服务端取得所有满足条件的行,然后将它存储在客户端,也就是说是一个包含数据的客户端静态视图;虽然以后的操作比较快,但数据库服务器处理第一次的请求非常慢,尤其是当返回的数据量比较大时。因此,如果返回的只是一行记录我们就不应使用这种游标,使用仅向前就满足要求了;相反,如果返回的记录非常多,也不推荐使用这种游标,因为这些数据都存放在内存里,大量的数据将很快使内存耗尽。有些滚动不敏感游标的实现是将数据缓存到数据库服务器的一个临时表中,以免占用过多的内存资源。
    scroll-sensitive:滚动敏感型,有时也叫键集驱动游标。它是在你的数据库上对满足条件的记录行做了一个标识,好像行的主键,当你滚动结果集的时候,只有有标识的数据才会返回。由于每次的请求都要产生一次网络连接,因此速度是很慢的。
      

  3.   

    查询语句没有问题, 我已经在sql server 2000 里执行过了, 可以查出记录来, 不会出错
      

  4.   

    1。对不起啊, 下面的这个while中语句只是写了一种造成出错的情况:即只能按照顺序取字段值.
    下面的while中的news_id在表结构中是排在news_name的后面, 如果换一下顺序则不出错。但还有另外的出错情况:
    while  (  rs.next()  )  
    {  
           rows++;  
           out.println(  rs.getString("news_id")  );  
           out.prontln(  rs.getString("news_name")  )  
    }  2。 另外的出错情况:while  (  rs.next()  )  
    {  
           rows++;  
           out.println(  rs.getString("news_id")  );  
           out.prontln(  rs.getString("news_id")  )  
    }  
    也会出错。错误就是标题中的信息。
    即不能两次在一个循环中取同一字段的值。Statement stmt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);也不管用
     
      

  5.   

    把你的sql改成:
    select newsKinds.news_kind kinds_name,a.*  
    from news a left join newKinds on a.news_kind=newKinds.news_kind order by news_pub_date desc试试
      

  6.   

    Connection conn = DBPool.getConnection();
    Statement stmt = conn.createStatement();
    ResultSet rs  = null;
    String sql = " select a.*,newsKinds.news_kind kinds_name  
    from news a left join newKinds on a.news_kind=newKinds.news_kind order by news_pub_date desc";
    rs = stmt.executeQuery(sql);
    while ( rs.next() )
    {
        rows++;
        out.println( rs.getString("news_id") );
        out.prontln( rs.getString("news_name") )
    }
      

  7.   

    klan大哥,还是不行, 在slq sever查询分析器里可以, 但还是不能同一字段取两次