private void refreshClubTable() { try { Statement statement = connection.createStatement(); ResultSet resultSet = statement.executeQuery("SELECT * FROM " + CLUB_TABLE_NAME); clubTableModel.setRowCount(0); while (resultSet.next()) { Vector<Object> row = new Vector<>(); row.add(resultSet.getInt(CLUB_COLUMN_ID)); row.add(resultSet.getString(CLUB_COLUMN_NAME)); row.add(resultSet.getString(CLUB_COLUMN_DESCRIPTION)); row.add(resultSet.getString(CLUB_COLUMN_LEADER)); clubTableModel.addRow(row); } resultSet.close(); statement.close(); } catch (SQLException e) { e.printStackTrace(); } }
时间: 2024-02-14 13:23:12 浏览: 70
这段代码定义了一个方法 refreshClubTable,用于刷新俱乐部表格 clubTable 中的数据。在方法中,首先创建一个 Statement 对象,用于执行 SQL 查询。然后,执行查询语句 "SELECT * FROM " + CLUB_TABLE_NAME,获取俱乐部表中的所有数据,将结果存储在 ResultSet 对象 resultSet 中。接着,将表格 clubTable 中的所有行清空,即将表格数据模型 clubTableModel 的行数设置为 0。然后,使用 while 循环遍历 resultSet 中的每一行数据,将每行数据存储在 Vector 对象 row 中,并将该行数据添加到表格数据模型 clubTableModel 中。最后,关闭 resultSet 和 statement 对象,如果发生 SQLException 异常,则在控制台上打印出异常信息。这段代码可能是用于在数据库中更新俱乐部数据后,更新俱乐部表格 clubTable 中的数据。
相关问题
假定已经获得一个数据库连接,使用变量conn来表示。下列语句中能够正确获得结果集的有__1__。(选择两项) A.Statement stmt = conn.createStatement(); ResultSet rs = stmt.executeQuery(“SELECT * FROM STUDENT”); B.Statement stmt = conn.createStatement(“SELECT * FROM STUDENT”); ResultSet rs = stmt.executeQuery(); C.PreparedStatement stmt = conn.prepareStatement(); ResultSet rs = stmt.executeQuery(“SELECT * FROM STUDENT”); D.PreparedStatement stmt = conn.prepareStatement(“SELECT * FROM STUDENT”); ResultSet rs = stmt.executeQuery();
正确答案是 A 和 D。
A 中的语句使用了 `conn.createStatement()` 创建 Statement 对象,并将 SQL 查询语句作为参数传递给 `executeQuery()` 方法,可以正确获得结果集。
D 中的语句使用了 `conn.prepareStatement()` 创建 PreparedStatement 对象,并在创建时传递了 SQL 查询语句作为参数,然后调用 `executeQuery()` 方法,也可以正确获得结果集。
B 中的语句使用了错误的函数调用方式,应该先调用 `conn.createStatement()` 创建 Statement 对象,再传递 SQL 查询语句作为参数给 `executeQuery()` 方法。
C 中的语句创建了一个 PreparedStatement 对象,但是没有传递 SQL 查询语句,因此无法正确获得结果集。
/* Test3.java 查看1年级1班共有多少学生 */ public static void main(String[] args) { try (Connection connection = DBUtil.getConnection();){ Statement statement = connection.createStatement(); String sql = "SELECT c.name,COUNT(s.id) FROM class c,student s WHERE s.class_id=c.id,AND c.name='1年级1班'"; ResultSet resultSet = statement.executeQuery(sql); while (resultSet.next()){ String cname = resultSet.getString("c.name"); int count = resultSet.getInt("COUNT(s.id)"); System.out.println(""+cname+","+count); } } catch (SQLException throwables) { throwables.printStackTrace(); } }改正该代码
代码存在两个问题:
1. SQL语句中逗号的位置不正确,应该是WHERE s.class_id=c.id AND c.name='1年级1班'。
2. 在输出结果时,应该将count值转换为字符串类型,否则会被当成加法运算。
修改后的代码如下:
```
/* Test3.java 查看1年级1班共有多少学生 */
public static void main(String[] args) {
try (Connection connection = DBUtil.getConnection();) {
Statement statement = connection.createStatement();
String sql = "SELECT c.name,COUNT(s.id) FROM class c,student s WHERE s.class_id=c.id AND c.name='1年级1班'";
ResultSet resultSet = statement.executeQuery(sql);
while (resultSet.next()) {
String cname = resultSet.getString("c.name");
int count = resultSet.getInt("COUNT(s.id)");
System.out.println("" + cname + "," + String.valueOf(count));
}
} catch (SQLException throwables) {
throwables.printStackTrace();
}
}
```
阅读全文