//这样试一试
package DB;
import java.util.*;
import java.sql.*;
public class Data
  {
    ///////////////////////
    Connection Conn = null;
    Statement St = null;
    ResultSet Rs = null;
    ///////////////////////
    HashMap BookHmap = null;
    ArrayList ArrL = null;
    Iterator i = null;
    //////////////////////
    BookDetails book = null;
    public static void main(String args[]) {
      try
      {
        Data d=new Data();
        d.getAllBooks();
        Collection c=d.BookArray();
        Iterator i=c.iterator();
        while(i.hasNext())
        {
          System.out.println("1");
        }
      }
      catch (Exception e)
      {
        System.out.println(e.getMessage());
      }
    }    public Collection BookArray() {
      return ArrL;
    }    public void getAllBooks() {
      try {
        String query = "select * from booktable";
        Class.forName("oracle.jdbc.driver.OracleDriver");
        Conn = DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:SUN",
                                           "scott", "tiger");
        St = Conn.createStatement();
        Rs = St.executeQuery(query);
/******************************************
        HashMap BookHmap=new HashMap();
*******************************************/
        BookHmap=new HashMap();        if (Conn != null && St != null && Rs != null)
        {/////////////////////
测试过    while (Rs.next()) 
     {
数据可            System.out.println(Rs.getString(1));
以取出    }/////////////////////////
         while(Rs.next())
         {
           BookDetails book = new BookDetails(Rs.getString("BOOKID"),
                                              Rs.getString("bookname"),
                                              Rs.getString("BOOKSORT"),
                                              Rs.getInt("bookprice"),
                                              Rs.getInt("BOOKTOTAL"));
                       BookHmap.put(Rs.getString("BOOKID"), book);
         }
/******************************************************************
        ArrayList  ArrL = new ArrayList(BookHmap.values());
*******************************************************************/
         ArrL = new ArrayList(BookHmap.values());
Collections.sort(ArrL);
        }
        else {
          System.out.println("Sql is null");
        }
      }
      catch (ClassNotFoundException e) {}
      catch (SQLException e) {}
    }
}

解决方案 »

  1.   

    断点设一下,debug一下找出问题代码段,应该比较好找,代码太长,我现在一看长代码就头疼,帮你顶吧!
      

  2.   

    废话,能返回不是空吗?
    你的getter是这样写的:
    <<
        public Collection BookArray() {
            return ArrL;
        }
    >>
    而生成ArrayList的语句是这样:
    <<
        ArrayList ArrL = new ArrayList(BookHmap.values());
    >>
    这两个ArrL是一个吗??
      

  3.   

    楼上真是一针见血...hiahia.
    你的Arrl 重复定义了...
    ArrayList ArrL = new ArrayList(BookHmap.values());
    是你期待返回的Arrl,
    但是,你前面定义的是:
    ArrayList ArrL = null;
    //.....
    public Collection BookArray() {
          return ArrL;
        }
    //.....
    //这里你返回的Arrl当然是Null啦!
      

  4.   

    原来不关Collection 的事啊。
      

  5.   

    还是老土两眼通红看得清楚,这么长的代码都看晕了.建议CSDN把网页做的支持关键字高亮显示,hoho