结果集成二维数组

Posted

技术标签:

【中文标题】结果集成二维数组【英文标题】:Resultset into 2d array 【发布时间】:2014-08-24 04:56:18 【问题描述】:

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

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

我不太确定该怎么做,如果我应该做一个while循环然后放入一个数组中。 我已经通过 out.write 将结果中的某些内容测试到 txt 文件中。

ResultSet result = stmt.executeQuery(sql);

这是我得到的,我试过了:

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

但是我不断收到错误,并且它只有一维数组。

【问题讨论】:

【参考方案1】:

您可以通过以下简单方式做到这一点:

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++;

【讨论】:

虽然此代码可以解决问题,including an explanation 说明如何以及为什么解决问题将真正有助于提高您的帖子质量,并可能导致更多的赞成票。请记住,您正在为将来的读者回答问题,而不仅仅是现在提问的人。请edit您的回答添加解释并说明适用的限制和假设。【参考方案2】:

这应该给你一个二维数据结构,作为一个列表,包含与结果集中的行一样多的元素,行中的每个列值都有字符串值。

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();

【讨论】:

我不知道为什么,但是当我尝试这个时,我将引用放入数组表中。所以当我 sysout 时,我得到类似 [Ljava.lang.String;@6487d5bd, .. 有什么我做错了吗? 这是意料之中的。您必须编写一个小循环来逐行打印。 谢谢.. 是的,我忘了当它的 2darray 时我必须循环 :)【参考方案3】:

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

        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++;
        

【讨论】:

这假设您知道行数,不是吗?【参考方案4】:

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

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

【讨论】:

以上是关于结果集成二维数组的主要内容,如果未能解决你的问题,请参考以下文章

matlab中如何计算二维数组大小?

C 语言二级指针案例 ( 字符串切割 | 返回 二维数组 作为结果 )

比较 Ruby 中二维数组的子数组,并显示结果数组与现有和遗漏的项目

二维数组的意外初始化结果

如何在PHP的二维数组中进行模糊搜索?

PHP:数组——二维转一维,二维转三维,将特定的数据作为键名