Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/10.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_Database_Postgresql_Postgis - Fatal编程技术网

Java数据库连接

Java数据库连接,java,database,postgresql,postgis,Java,Database,Postgresql,Postgis,我已经将Java与一个已经运行的数据库连接起来,现在我尝试从数据库中获取数据,将其保存在ArrayList中,并将其可视化到Jlist中。 通过尝试这样做,我获得并摆脱了边界的感觉。 我是这个领域的新手,所以如果你有更多的问题,请提问 我的密码在这里 public ArrayList<Data> getAllSports() throws SQLException { ArrayList<Data> result = new ArrayList<Data&

我已经将Java与一个已经运行的数据库连接起来,现在我尝试从数据库中获取数据,将其保存在ArrayList中,并将其可视化到Jlist中。 通过尝试这样做,我获得并摆脱了边界的感觉。 我是这个领域的新手,所以如果你有更多的问题,请提问

我的密码在这里

public ArrayList<Data> getAllSports() throws SQLException {

    ArrayList<Data> result = new ArrayList<Data>();
    String query = "select * from public.sport_type";
    Connection connection = connect();
    Statement stmt = null;
    stmt = connection.createStatement();
    ResultSet rs = stmt.executeQuery(query);
    while (rs.next()) {
        Data sports = new Data(0, query, 0, 0, query, 0, query, query, 0,
                0, 0);
        sports.setSportID(rs.getInt("sport_type_id"));
        model.add(rs.getInt("sport_type_id"), sports);

        query = "select * from public.match";
        stmt = connection.createStatement();
        rs = stmt.executeQuery(query);
        while (rs.next()) {
            sports.setMatchid(rs.getInt("match_id"));
            sports.setMatchn(rs.getString("match_description"));
            model.add(rs.getInt("match_id"), rs.getString("match_description"));

            query = "select * from public.player";

            stmt = connection.createStatement();
            rs = stmt.executeQuery(query);
            while (rs.next()) {
                sports.setPlayerID(rs.getInt("player_id"));
                sports.setName(rs.getString("player_name"));
                sports.setSpeed(rs.getDouble("sprint_speed"));

                query = "select * from public.measurement";



                stmt = connection.createStatement();
                rs = stmt.executeQuery(query);
                while (rs.next()) {
                    sports.setX(rs.getInt("new_x"));
                    sports.setY(rs.getInt("y_zero_up"));
                    sports.setTime(rs.getString("measurement_time"));
                    result.add(sports);


                    System.out.println("run");

                }   
            }
        }
    }
    Layout.jList1.setModel(model);
        connection.close();
        return result;
}

所以有两件事与我有关

您创建了ResultSet的一个新实例,但正在将其分配给同一个变量,然后尝试继续使用它,就好像它没有被更改一样。每个子查询必须有自己的结果集。 model.addrs.getIntsport\u type\u id,sports;可能正在尝试将对象添加到DefaultListModel中不存在的位置。您不能向向量或ArrayList添加值,这通常会使DefaultListModel失去顺序,这不是这些数据结构的工作方式。 您还应该尽一切努力关闭您创建的任何资源,例如

public ArrayList<Data> getAllSports() throws SQLException {

    ArrayList<Data> result = new ArrayList<Data>();
    String query = "select * from public.sport_type";
    try (Connection connection = connect()) {
        Statement stmt = connection.createStatement();
        try (ResultSet rs = stmt.executeQuery(query)) {
            while (rs.next()) {
                Data sports = new Data(0, query, 0, 0, query, 0, query, query, 0,
                                0, 0);
                sports.setSportID(rs.getInt("sport_type_id"));
                model.add(rs.getInt("sport_type_id"), sports);

                query = "select * from public.match";
                stmt = connection.createStatement();
                try (ResultSet rs1 = stmt.executeQuery(query)) {
                    while (rs1.next()) {
                        sports.setMatchid(rs1.getInt("match_id"));
                        sports.setMatchn(rs1.getString("match_description"));
                        model.add(rs1.getInt("match_id"), rs1.getString("match_description"));

                        query = "select * from public.player";
                        stmt = connection.createStatement();
                        try (ResultSet rs2 = stmt.executeQuery(query)) {
                            while (rs2.next()) {
                                sports.setPlayerID(rs2.getInt("player_id"));
                                sports.setName(rs2.getString("player_name"));
                                sports.setSpeed(rs2.getDouble("sprint_speed"));

                                query = "select * from public.measurement";
                                stmt = connection.createStatement();
                                try (ResultSet rs3 = stmt.executeQuery(query)) {
                                    while (rs3.next()) {
                                        sports.setX(rs3.getInt("new_x"));
                                        sports.setY(rs3.getInt("y_zero_up"));
                                        sports.setTime(rs3.getString("measurement_time"));
                                        result.add(sports);

                                        System.out.println("run");

                                    }
                                }
                            }
                        }
                    }
                }
            }

        }
    }
    Layout.jList1.setModel(model);
    return result;
}

查看每个子查询的详细信息,您必须使用单独的结果集。您还应确保尝试关闭/释放您创建的资源。查看更多详细信息model.addrs.getIntsport\u type\u id,sports;是你问题的根本原因。DefaultListModeladdint,Object将尝试在ListModel中的指定索引处添加指定的对象,但是如果ListModel中没有足够的元素来覆盖该索引,它将失败。非常感谢我更改了它;'但不幸的是,这不是解决办法
public ArrayList<Data> getAllSports() throws SQLException {

    ArrayList<Data> result = new ArrayList<Data>();
    String query = "select * from public.sport_type";
    try (Connection connection = connect()) {
        Statement stmt = connection.createStatement();
        try (ResultSet rs = stmt.executeQuery(query)) {
            while (rs.next()) {
                Data sports = new Data(0, query, 0, 0, query, 0, query, query, 0,
                                0, 0);
                sports.setSportID(rs.getInt("sport_type_id"));
                model.add(rs.getInt("sport_type_id"), sports);

                query = "select * from public.match";
                stmt = connection.createStatement();
                try (ResultSet rs1 = stmt.executeQuery(query)) {
                    while (rs1.next()) {
                        sports.setMatchid(rs1.getInt("match_id"));
                        sports.setMatchn(rs1.getString("match_description"));
                        model.add(rs1.getInt("match_id"), rs1.getString("match_description"));

                        query = "select * from public.player";
                        stmt = connection.createStatement();
                        try (ResultSet rs2 = stmt.executeQuery(query)) {
                            while (rs2.next()) {
                                sports.setPlayerID(rs2.getInt("player_id"));
                                sports.setName(rs2.getString("player_name"));
                                sports.setSpeed(rs2.getDouble("sprint_speed"));

                                query = "select * from public.measurement";
                                stmt = connection.createStatement();
                                try (ResultSet rs3 = stmt.executeQuery(query)) {
                                    while (rs3.next()) {
                                        sports.setX(rs3.getInt("new_x"));
                                        sports.setY(rs3.getInt("y_zero_up"));
                                        sports.setTime(rs3.getString("measurement_time"));
                                        result.add(sports);

                                        System.out.println("run");

                                    }
                                }
                            }
                        }
                    }
                }
            }

        }
    }
    Layout.jList1.setModel(model);
    return result;
}