结果集为2d数组

时间:2014-07-03 07:19:53

标签: java mysql arrays resultset

我刚刚做了一个mysql查询,它被放入一个名为result的结果集中。

现在我希望它进入一个2d对象,我可以用它来显示查询结果。

我不太清楚怎么做,如果我应该做一个while循环然后放入一个数组。 我已经测试了结果中的某些内容,将其写入txt文件。

ResultSet result = stmt.executeQuery(sql);

这是我得到的,我试过:

int i =0;
        sqlresult = new String[result.getMetaData().getColumnCount()];
        while(result.next()){
            sqlresult[i] = result.getArray(sql);
            i++;
        }

但是我不断得到一个错误,它只有一个数组。

4 个答案:

答案 0 :(得分:9)

这应该为您提供一个二维数据结构,作为List,包含与结果集中的行一样多的元素,并为行中的每个列值使用String值。

int nCol = result.getMetaData().getColumnCount();
List<String[]> table = new ArrayList<>();
while( result.next()) {
    String[] row = new String[nCol];
    for( int iCol = 1; iCol <= nCol; iCol++ ){
            Object obj = result.getObject( iCol );
            row[iCol-1] = (obj == null) ?null:obj.toString();
    }
    table.add( row );
}

// print result
for( String[] row: table ){
    for( String s: row ){
        System.out.print( " " + s );
    }
    System.out.println();
}

答案 1 :(得分:2)

我不确定你想要什么,但是这段代码将从当前结果集中获取列值并将其存储在数组中。

         while(result.next()){
             java.sql.Array columnVar = rs.getArray("ColumnName");
             String[] zips = (String[])columnVar.getArray();
        }

答案 2 :(得分:1)

这会将整个结果集转换为对象的二维数组。

        Object[][] resultSet = new Object[rows][columns];
        int row = 0;
        while (result.next()) {
            for (int i = 0; i < columns; i++) {
                resultSet[row][i] = result.getObject(i+1);
            }
            row++;
        }

答案 3 :(得分:0)

您可以通过以下简单方式进行操作:

ResultSetMetaData metadata = Result.getMetaData();
numberOfColumns = metadata.getColumnCount();
ResultSetArray= new String[numberOfRows][numberOfColumns];
int i=0;
while (Result.next()) {

    for (int j = 0; j < numberOfColumns; j++) {
        ResultSetArray[i][j] = Result.getString(j+1);
    }
    i++;
}