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