日期:2014-05-20  浏览次数:20796 次

从数据集取出数据并赋值给二维数组的问题?
数据库查询结果:
年份 1月 2月 3月 4月 5月 6月 7月 8月 9月 10月 11月 12月
2010  
2011
2012

Java code

          /**
     *    从数据集里取出数据并赋值给二维数组,只取月份的数据存入二维数组。
     */
    public double[][] InvoiceDate(){
        double[][] data=null;
        try {
            conn=MyCon.getCon();
            String sql="select * from InvoiceAmtCount";
            ps=conn.prepareStatement(sql);
            rs=ps.executeQuery();
            ResultSetMetaData rsmt=rs.getMetaData();
            rs.last();
            //获取结果集最后一行的行号
            int row=rs.getRow();
            //取得数据集的列数
            int column=rsmt.getColumnCount();
            data=new double[row][column-1];
            rs.beforeFirst();
    
            while(rs.next()){
                for(int i=0;i<row;i++){
                    for(int j=0;j<column-1;j++){
                        data[i][j]=rs.getDouble(j+2);
                    }
                }            }
        } catch (SQLException e) {
            e.printStackTrace();
        }finally{
            MyCon.close(rs, ps, conn);
        }
        return data;
    }



请问上面的写法正确吗,我在用JfreeChart做柱状图的时候,引入这个二维数组,生成的图形不太正确。后来输出二维数给的时候,输出的数据是三行2012年的。

------解决方案--------------------
你while循环里面,每次循环都是这个二维数组从第一个元素到最后一个元素都重新赋值一遍,其实只要外面已经循环了,里面只一个循环就可以
Java code

int i=0;
  while(rs.next()){
                    for(int j=0;j<column-1;j++){
                        data[i][j]=rs.getDouble(j+2);
                    }
                  i++;
                }