主要问题是出在Hashtable[]中!

解决方案 »

  1.   

    楼上数组可能越界了。
    private void getTableColumnName(ResultSetMetaData rsmd){
        Hashtable[] columnHt=null;
        try {
          int columnCount=rsmd.getColumnCount();
          columnHt=new Hashtable[columnCount];
          for(int i=0;i<columnCount;i++){
            String columnName=rsmd.getColumnName(i+1);        //String columnName=rsmd.getColumnName(i);        String columnTypeName=rsmd.getColumnTypeName(i+1);
          
            //String columnTypeName=rsmd.getColumnTypeName(i);
            columnHt[i].put(columnName,columnTypeName);
          }
        }
        catch (Exception ex){
          System.out.println(ex.toString());
        }
      }
    试试
      

  2.   

    已经解决不是数组越界了,而是要重新申明它的对象!
    如:
    private void getTableColumnName(ResultSetMetaData rsmd){
    Hashtable[] columnHt=null;
    try {
    int columnCount=rsmd.getColumnCount();
    columnHt=new Hashtable[columnCount];
    for(int i=0;i<columnCount;i++){
    String columnName=rsmd.getColumnName(i+1);
    String columnTypeName=rsmd.getColumnTypeName(i+1);
    columnHt[i]=new Hashtable();//重要点在这里!
    columnHt[i].put(columnName,columnTypeName);
    }
    }
    catch (Exception ex){
    System.out.println(ex.toString());
    }
    }
      

  3.   

    columnHt[i]必须初始化
     如:columnHt[0] = new HashTable();
      

  4.   

    Java建立对象数组的时候都是这样,仅仅是建立一个数组引用,数组里面的对象全部都没有初始化。需要手工初始化。否则就会出现楼主遇到的异常。