Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/349.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么我只从数据库中获取最后一行?_Java_Netbeans - Fatal编程技术网

Java 为什么我只从数据库中获取最后一行?

Java 为什么我只从数据库中获取最后一行?,java,netbeans,Java,Netbeans,我使用Netbeans 8.2。我试图从数据库中获取数据并将其显示在jTable中。 但是,当我运行程序时,我只得到最后一行 有人能帮我解决吗 public class MultiSpanCellTableExample extends JFrame { Statement st; ResultSet rs; Object [][]row; Object[] column; MultiSpanCellTableExample() { co

我使用Netbeans 8.2。我试图从数据库中获取数据并将其显示在jTable中。 但是,当我运行程序时,我只得到最后一行

有人能帮我解决吗

public class MultiSpanCellTableExample extends JFrame {
    Statement st;
    ResultSet rs;
    Object [][]row;
    Object[] column;

    MultiSpanCellTableExample() {
        column = new Object[]{"","","","",""};  
        String g="",h="",j="",z="",n="",hg="",oo="",zz="";               
        Double l=null;
        Date i=null;
        String sql="SELECT  * from personn";                      
        con=Connections.getConnection();

        try{
            st=con.createStatement();
            rs=st.executeQuery(sql);                        
            while(rs.next()){                                        
                g=rs.getString("NAMME");                    
                l=rs.getDouble("TOTAL");                    
                i=rs.getDate("DATEE");                         
                z=rs.getString("WY");
                n=rs.getString("BAA");                                              
                row=new Object[][]{{g,l,z,i,n}};  
            } 
        }
        catch(Exception e){
            System.out.print( e);
        }       

        AttributiveCellTableModel ml = new AttributiveCellTableModel(row,column);
        final CellSpan cellAtt =(CellSpan)ml.getCellAttribute();
        final MultiSpanCellTable table = new MultiSpanCellTable(ml);                  
        JScrollPane scroll = new JScrollPane( table );                

        Box box = new Box(BoxLayout.X_AXIS);
        box.add(scroll);
        box.add(new JSeparator(SwingConstants.HORIZONTAL));
        box.add(p_buttons);
        getContentPane().add( box );
        setSize( 400, 200 );
        setVisible(true);
    }

    public static void main(String[] args) {
        MultiSpanCellTableExample frame = new MultiSpanCellTableExample();
        frame.addWindowListener( new WindowAdapter() {
            public void windowClosing( WindowEvent e ) {
                System.exit(0);
            }
        });
    }
}
问题 您尚未使用所需的行数初始化
行[][]
。此外,您没有将记录存储到
行[i]
,其中
i
是索引。请注意,二维数组是数组的数组,因此数据库中的每个记录都表示一个一维数组,需要将其存储到
行[i]

解决方案 问题 您尚未使用所需的行数初始化
行[][]
。此外,您没有将记录存储到
行[i]
,其中
i
是索引。请注意,二维数组是数组的数组,因此数据库中的每个记录都表示一个一维数组,需要将其存储到
行[i]

解决方案
将行放入数组或列表中,迭代列表,您将获得所有内容。在while循环中,每次初始化行对象时,您都没有将其存储在数组中。因此,当退出while循环时,您将得到最后一行。您的问题在while循环中-对于循环的每次迭代,您将处理rs.next并创建一个新的row对象。但是,您从不将row对象存储在列表或表中,因此在下一次迭代中,您将用一个新的行替换同一行,最后只保留最后一行。@Sambit非常感谢您将该行放入数组或列表中,迭代该列表,您将获得所有内容。在while循环中,每次初始化行对象时,都没有将其存储在数组中。因此,当退出while循环时,您将得到最后一行。您的问题在while循环中-对于循环的每次迭代,您将处理rs.next并创建一个新的row对象。但是,您从未将row对象存储在列表或表中,因此在下一次迭代中,您将用新的行替换同一行,最后只保留最后一行。@Sambit非常感谢您的朋友
try{
    // Get the number of rows
    Statment stmt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
    ResultSet rsCount = stmt.executeQuery("SELECT  count(*) from personn");

    if(rsCount.next()) {
        // Initialize row[][]
        row = new Object[rsCount.getInt(1)][];

        st = con.createStatement();
        rs = st.executeQuery(sql);  

        for(int i = 0; rs.next(); i++) {                                        
            g = rs.getString("NAMME");                    
            l = rs.getDouble("TOTAL");                    
            i = rs.getDate("DATEE");                         
            z = rs.getString("WY");
            n = rs.getString("BAA");  

            // Store the record into row[i]                                          
            row[i] = new Object[]{g,l,z,i,n};  
        } 
    }       
}