Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/57.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 将连续(MySQL)结果集复制到单个多维数组中_Java_Mysql - Fatal编程技术网

Java 将连续(MySQL)结果集复制到单个多维数组中

Java 将连续(MySQL)结果集复制到单个多维数组中,java,mysql,Java,Mysql,我想将从MySQL数据库的多个表中获得的几个结果集复制到一个多维数组中。使用for循环,我运行了一个包含数据库中表名的数组 我已经成功地选择了数据并获得了一个结果集,正是这些不同的结果集对应于我打算复制到单个多维数组中的表。当我试图打印出这个多维数组时,它似乎是空的 如果您想知道多维数组的行数和列数是预先知道的。在我下面的代码中,行数是12,列数是18 下面是我编辑的代码: // Pass array holding existing tables for selection o

我想将从MySQL数据库的多个表中获得的几个结果集复制到一个多维数组中。使用for循环,我运行了一个包含数据库中表名的数组

我已经成功地选择了数据并获得了一个结果集,正是这些不同的结果集对应于我打算复制到单个多维数组中的表。当我试图打印出这个多维数组时,它似乎是空的

如果您想知道多维数组的行数和列数是预先知道的。在我下面的代码中,行数是12,列数是18

下面是我编辑的代码:

        // Pass array holding existing tables for selection of all data from each array element
    String[][] arr = null, current = null;
    int i = 0;
    int j = 0;

    for(int k = 0; k <= existingTablesInDBAsArr.length; k++) {

        String sql = "SELECT * FROM " + existingTablesInDBAsArr[k];

        try (
                //Connection conn = DBUtil.getConnection(DBType.MYSQL);
                Statement stmt = conn.createStatement();
                ResultSet rs = stmt.executeQuery(sql);
                ){

            System.out.println("\nRS as a string buffer: ");            

            while (rs.next()) {
                StringBuffer bf = new StringBuffer();

                bf.append(rs.getInt("entryID") + ": ");
                bf.append(rs.getString("agentID") +"~ ");
                bf.append(rs.getString("company") +"~ ");
                bf.append(rs.getString("contact") +"~ ");
                bf.append(rs.getString("telephone") +"~ ");
                bf.append(rs.getString("fax") +"~ ");
                bf.append(rs.getString("address") +"~ ");
                bf.append(rs.getString("email") +"~ ");
                bf.append(rs.getString("county") +"~ ");
                bf.append(rs.getString("postcode") +"~ ");
                bf.append(rs.getString("country") +"~ ");
                bf.append(rs.getString("admin_notes") +"~ ");
                bf.append(rs.getString("agent_notes") +"~ ");
                bf.append(rs.getString("enqr_taken_by") +"~ ");
                bf.append(rs.getString("enqr_type") +"~ ");
                bf.append(rs.getString("enqr_action") +"~ ");
                bf.append(rs.getString("enqr_date") +"~ ");
                bf.append(rs.getString("enqr_time"));

                System.out.println(bf.toString());
            }

            System.out.println("\nRS as an array:");

            try {

                try {
                    rs.beforeFirst();
                } catch(Exception ex) {
                    System.out.println("\nException WRT rs.first(); i.e. \n" + ex.toString());
                }

                ResultSetMetaData rsmd = rs.getMetaData();

                int columnSize = rsmd.getColumnCount();

                arr = new String[numbOfRows][columnSize];

                System.out.println("\ni outside while but before increment is: " +  i);
                System.out.println("j outside while but before increment is: " +  j);

                while(rs.next()) {
                    System.out.println("\ni inside while but before increment is: " +  i);
                    System.out.println("j inside while but before increment is: " +  j);

                    for(j = 0; j < columnSize; j++) {
                        arr[i][j] = rs.getString(j + 1).toUpperCase();

                        System.out.println("arr[" + i + "][" + j + "]: " + arr[i][j]);
                    }

                    System.out.println("\n");

                    i++;

                    System.out.println("\ni inside while but after increment is: " +  i);
                    System.out.println("j inside while but after increment is: " +  j + "\n");

                    if(i == arr.length) {
                        System.out.println("\n---\nEnqrsTableManager - i == arr.length");

                        System.out.println("\n---\nEnqrsTableManager - arr.length > 0\n---\nArray containing all entries from all tables is as follows: ");

                        for (int row = 0; row < arr.length; row++) {

                            System.out.println("arr[" + row + "][0]: " + arr[row][0]);
                            System.out.println("arr[" + row + "][1]: " + arr[row][1]);
                            System.out.println("arr[" + row + "][2]: " + arr[row][2]);
                            System.out.println("arr[" + row + "][3]: " + arr[row][3]);
                            System.out.println("arr[" + row + "][4]: " + arr[row][4]);
                            System.out.println("arr[" + row + "][5]: " + arr[row][5]);
                            System.out.println("arr[" + row + "][6]: " + arr[row][6]);
                            System.out.println("arr[" + row + "][7]: " + arr[row][7]);
                            System.out.println("arr[" + row + "][8]: " + arr[row][8]);
                            System.out.println("arr[" + row + "][9]: " + arr[row][9]);
                            System.out.println("arr[" + row + "][10]: " + arr[row][10]);
                            System.out.println("arr[" + row + "][11]: " + arr[row][11]);
                            System.out.println("arr[" + row + "][12]: " + arr[row][12]);
                            System.out.println("arr[" + row + "][13]: " + arr[row][13]);
                            System.out.println("arr[" + row + "][14]: " + arr[row][14]);
                            System.out.println("arr[" + row + "][15]: " + arr[row][15]);
                            System.out.println("arr[" + row + "][16]: " + arr[row][16]);
                            System.out.println("arr[" + row + "][17]: " + arr[row][17]);
                        }                   
                    }
                }

            } catch (Exception e) {
                System.out.println("\nError in generating 2D array from specific table resultset");
            }
        }
    }

非常感谢您的帮助/建议。

您为数组赋值的方式可能导致以下问题:

System.out.println("arr[" + i + "][" + j + "]: " + (arr[i][j] = rs.getString(j + 1).toUpperCase()));
应改为:

arr[i][j] = rs.getString(j + 1).toUpperCase();
System.out.println("arr[" + i + "][" + j + "]: " + arr[i][j]);
System.out.println不应包含除控制台有用消息之外的任何内容-绝对不是变量分配

编辑:

此外,如果要为第二个循环再次迭代结果集,请确保重置结果集:

 resultSet.first();

否则,光标将位于末尾,您将看不到任何结果。

@StuPointerException:谢谢,我已经应用了更改,但没有任何区别。我不明白它为什么不打印任何东西。@StuPointerException:谢谢。在我编辑的代码中添加rs.beforeFirst似乎使我能够填充我调用arr的数组,但现在的困境是if语句ifi==arr.length{对于我刚刚成功填充的数组,似乎正在返回空值。我之所以说成功,是因为在对该数组的每一行进行计数时,我正在打印数组中每个结果集行的插入。