大家帮我看看呀!而且我发现一个奇怪的问题
如果不加System.out.println(rs.getString(i));这句话,返回的行值就是对的,可是一有这句话,返回的行值就是0,这是为什么呀?帮帮忙吧,被困了两天了

解决方案 »

  1.   

    for循环好象有问题
    你获取的字段不是放在一个数组里的嘛????
      

  2.   

    那句话是调试用的,不要了。
    可是现在表格不显示数据,为什么呀
    class SimpleTableModel extends AbstractTableModel
        {
    Vector columnNames = new Vector(); 
    Vector data = new Vector(); 

            //获取字段的名称
    public SimpleTableModel(ResultSet rs)
    {
    try
    {
        ResultSetMetaData rsmd=rs.getMetaData();
       for(int i=1;i<=rsmd.getColumnCount();i++)
       {
         columnNames.addElement(rsmd.getColumnName(i));
                }

    //获取记录集
                     
       while(rs.next())
     { 
        for(int i=1;i<=rsmd.getColumnCount();i++)
                   {
    data.addElement(rs.getObject(i));                
          }
      }
          }
      catch(SQLException ex)
    {
                      System.err.println("SQLException: " + ex.getMessage());
                      System.err.println("SQLState: " + ex.getSQLState());
                      System.err.println("Message: " + ex.getMessage());
                      System.err.println("Vendor: " + ex.getErrorCode());
    }
       }


            public int getColumnCount()
            {

                return columnNames.size();

            }
            public int getRowCount()
            {
     // System.out.println(data.size());
                return data.size()/columnNames.size();
            }
            public String getColumnName(int col)
            {
      System.out.println((String)columnNames.elementAt(col));
                return (String)columnNames.elementAt(col);
            }
            public Object getValueAt(int row, int col)
            {

                return (String)data.elementAt(row*getColumnCount()+col);
            }
            public boolean isCellEditable(int row, int col)
            {
                if (col == 0) {return false;}
                else         {return true; }
            }

            public void setValueAt(Object aValue, int rowIndex, int columnIndex)
        {
                  return;
    }
    }
    //生成Table的语句            JTable table ;
        JScrollPane scrollPane = new JScrollPane(table);
                SimpleTableModel myModel = new SimpleTableModel(rs);
      table = new JTable(myModel);我把程序稍微改了一下
      

  3.   


    试试这样
    Vector columnNames = new Vector(); 
    Vector data = new Vector(); 
    public SimpleTableModel(ResultSet rs)
    {
    try
    {
        ResultSetMetaData rsmd=rs.getMetaData();
       for(int i=1;i<=rsmd.getColumnCount();i++)
       {
         columnNames.addElement(rsmd.getColumnName(i));
                }

    //获取记录集
                     
       while(rs.next())
     { 
        for(int i=1;i<=rsmd.getColumnCount();i++)
                   {
    data.addElement(rs.getObject(i));          
                        (这里面应该是一个2维的表,你自己写了,再弄一个vector 存你数据库每一行,然后把这些vector 存到data 里去)      
          }
      }
          }
    class myModel extends DefaultTableModel
    {
      public myModel(Vector data,Vector columnNames)
      {
        super(data,columnNames);
      }
      public Class getColumnClass(int col)
       {
         Vector v=(Vector) dataVector.elementAt(0);
         return v.elementAt(col).getClass();
       }
       public boolean isCellEditable(int row,int col)
       {
         Class columnClass=getColumnClass(col);
         return columnClass!=ImageIcon.class &&columnClass!=String.class;
       }
    }然后
    myModel mm=new myModel(columnNames ,data)
    JTable jt=new JTable(mm);
      

  4.   

    谢谢各位,我找到答案了,是因为添加scrollpane,和table的顺序错误