while (resultSet.next()){ String Sno=resultSet.getString(1); String Sname=resultSet.getString(2); String Dno=resultSet.getString(3); String Atime=resultSet.getString(4); String Areason=resultSet.getString(5); String[] data={Sno,Sname,Dno,Atime,Areason}; mm.addRow(data);
时间: 2024-02-14 07:23:52 浏览: 78
这段代码是用来将从 ResultSet 对象中获取的查询结果添加到表格模型(mm)中的。具体来说,它使用一个 while 循环遍历 ResultSet 对象中的所有数据行,然后从每一行中获取学号(Sno)、学生姓名(Sname)、系别(Dno)、缺勤时间(Atime)和缺勤原因(Areason)这五个属性的值,分别存储到一个 String 类型的数组 data 中。
接着,使用表格模型的 addRow() 方法将该数据行添加到表格模型中。这样就可以在 GUI 界面上显示查询结果。在这个例子中,该代码通常用于查询数据库中的数据,并将查询结果显示在表格中。
相关问题
逐句解析private void search(){ PreparedStatement state; ResultSet resultSet; if(type==1){ try { state=connection.prepareStatement("select * from absent where Sname"+"="+"'"+user.getName()+"'"); //这里不好 因为名字可以一样 以后要改 resultSet = state.executeQuery(); while (resultSet.next()){ String Sno=resultSet.getString(1); String Sname=resultSet.getString(2); String Dno=resultSet.getString(3); String Atime=resultSet.getString(4); String Areason=resultSet.getString(5); String[] data={Sno,Sname,Dno,Atime,Areason}; a.addRow(data); } } catch (SQLException e) { e.printStackTrace(); } } if(type==2||type==3){ try { record(); state=connection.prepareStatement("select*from absent"); resultSet = state.executeQuery(); while (resultSet.next()){ String Sno=resultSet.getString(1); String Sname=resultSet.getString(2); String Dno=resultSet.getString(3); String Atime=resultSet.getString(4); String Areason=resultSet.getString(5); String[] data={Sno,Sname,Dno,Atime,Areason}; a.addRow(data); } }catch (Exception e){ e.printStackTrace(); } } }
这段代码定义了一个私有的方法 `search()`,该方法没有参数。
在方法中,首先声明了三个变量 `state`、`resultSet` 和 `data`,类型分别为 `PreparedStatement`、`ResultSet` 和 `String[]`。
然后,通过判断变量 `type` 的值,来确定执行哪一段代码。如果 `type` 的值为 1,那么执行以下代码块:
```java
state = connection.prepareStatement("select * from absent where Sname"+"="+"'"+user.getName()+"'");
resultSet = state.executeQuery();
while (resultSet.next()){
String Sno=resultSet.getString(1);
String Sname=resultSet.getString(2);
String Dno=resultSet.getString(3);
String Atime=resultSet.getString(4);
String Areason=resultSet.getString(5);
String[] data={Sno,Sname,Dno,Atime,Areason};
a.addRow(data);
}
```
这段代码的作用是从数据库中查询名字为 `user.getName()` 的记录,并将查询结果添加到 `data` 中。
如果 `type` 的值为 2 或 3,那么先调用 `record()` 方法,然后执行以下代码块:
```java
state = connection.prepareStatement("select*from absent");
resultSet = state.executeQuery();
while (resultSet.next()){
String Sno=resultSet.getString(1);
String Sname=resultSet.getString(2);
String Dno=resultSet.getString(3);
String Atime=resultSet.getString(4);
String Areason=resultSet.getString(5);
String[] data={Sno,Sname,Dno,Atime,Areason};
a.addRow(data);
}
```
这段代码的作用是从数据库中查询所有记录,并将查询结果添加到 `data` 中。
最后,如果出现异常,则打印异常信息。
/*while (resultSet.next()){ String Sno=resultSet.getString(1); String Sname=resultSet.getString(2); String Dno=resultSet.getString(3); String Atime=resultSet.getString(4); String Areason=resultSet.getString(5); String[] data={Sno,Sname,Dno,Atime,Areason}; mm.addRow(data); }*/
这段代码是一个注释,被 /* 和 */ 包裹起来了,因此不会被编译器执行。它是用来说明如何从 ResultSet 对象中获取查询结果的具体数据的。
在这个例子中,通过 resultSet.getString() 方法,可以获取每一行数据中的各个列的值。例如,resultSet.getString(1) 表示获取当前行的第一个列的值,也就是学号(Sno)的值;resultSet.getString(2) 表示获取当前行的第二个列的值,也就是学生姓名(Sname)的值,以此类推。
接着,将这些列的值存储到一个 String 类型的数组 data 中,然后将该数组添加到一个表格模型(mm)中,以便在 GUI 界面上显示查询结果。
阅读全文