while (rs.next()) { int _sno = rs.getInt(1); String _sname = rs.getString(2); String _sex = rs.getString(3); int _age = rs.getInt(4); String _phone = rs.getString(5); Student s = new Student(_sno, _sname, _sex, _age, _phone); allStudents.add(s); }
时间: 2024-02-14 15:18:46 浏览: 73
这段代码是在遍历查询结果集(ResultSet)中的每一行数据,并将每一行数据转换成一个Java对象(Student),最终将这些对象添加到一个List中(allStudents),以便后续的操作。其中,getInt()、getString()等方法是ResultSet接口中用于获取当前行指定列的数据的方法,参数是指定列的索引或列名。Student类的构造方法用于将ResultSet中的数据转换成Java对象。
相关问题
在数据库stuMis中创建一个基本表student ,结构为 CREATE TABLE `student` ( `id` int(11) NOT NULL AUTO_INCREMENT, `sno` varchar(5) NOT NULL, `sname` varchar(20) NOT NULL, `ssex` varchar(3) DEFAULT NULL, `sage` int(11) DEFAULT NULL, PRIMARY KEY (`id`), KEY `sno` (`sno`) ) ; 并在里面插入若干条记录,其中有一条是自己的记录。编写数据库连接程序,访问此数据库,将student表中的数据在控制台上打印出来。
好的,我可以帮你回答这个问题。以下是实现该功能的步骤:
1. 在 MySQL 数据库中创建一个名为 stuMis 的数据库。
2. 在 stuMis 数据库中创建一个名为 student 的表,表结构为:
```
CREATE TABLE `student` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`sno` varchar(5) NOT NULL,
`sname` varchar(20) NOT NULL,
`ssex` varchar(3) DEFAULT NULL,
`sage` int(11) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `sno` (`sno`)
);
```
3. 向 student 表中插入若干条记录,其中包含你自己的记录。
```
INSERT INTO `student` (`sno`, `sname`, `ssex`, `sage`) VALUES
('001', '张三', '男', 20),
('002', '李四', '女', 19),
('003', '王五', '男', 21),
('004', '赵六', '女', 20),
('005', '钱七', '男', 18),
('006', '自己的学号', '自己的姓名', '自己的性别', '自己的年龄');
```
4. 编写 Java 程序连接数据库,并查询 student 表中的数据。
```
import java.sql.*;
public class Test {
public static void main(String[] args) {
// 数据库连接参数
String url = "jdbc:mysql://localhost:3306/stuMis?useUnicode=true&characterEncoding=utf-8&useSSL=false";
String username = "root";
String password = "123456";
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
try {
// 加载数据库驱动
Class.forName("com.mysql.jdbc.Driver");
// 获取数据库连接
conn = DriverManager.getConnection(url, username, password);
// 创建 Statement 对象
stmt = conn.createStatement();
// 执行 SQL 查询语句
String sql = "SELECT * FROM student";
rs = stmt.executeQuery(sql);
// 输出查询结果
while (rs.next()) {
int id = rs.getInt("id");
String sno = rs.getString("sno");
String sname = rs.getString("sname");
String ssex = rs.getString("ssex");
int sage = rs.getInt("sage");
System.out.println(id + "\t" + sno + "\t" + sname + "\t" + ssex + "\t" + sage);
}
} catch (ClassNotFoundException | SQLException e) {
e.printStackTrace();
} finally {
// 释放资源
try {
if (rs != null) {
rs.close();
}
if (stmt != null) {
stmt.close();
}
if (conn != null) {
conn.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
```
注意,需要先导入 MySQL 的 JDBC 驱动包。执行该程序后,控制台会输出 student 表中的所有数据。
创建学生数据库student,创建学生信息表message表(sno,sname,birthday,major)、成绩表score(sno,cno, cname ,sscore)并输入数据。创建java web项目,通过表单提交一个学生的成绩,然后查询所有的学生的成绩数据,输出
创建学生数据库和两个关联表的过程通常是在数据库设计阶段完成的,这里我会提供一个基本的SQL操作示例,并说明如何在Java Web项目中实现数据的提交和查询。
首先,我们假设已经在MySQL数据库中创建了名为`student`的数据库,然后有两个表:`message`和`scores`。
```sql
-- 创建student信息表
CREATE TABLE message (
sno VARCHAR(20) PRIMARY KEY, -- 学生学号
sname VARCHAR(50), -- 学生姓名
birthday DATE, -- 出生日期
major VARCHAR(50) -- 专业
);
-- 创建成绩表
CREATE TABLE score (
sno VARCHAR(20) REFERENCES message(sno), -- 引用学生表的学号
cno INT, -- 课程编号
cname VARCHAR(50), -- 课程名称
sscore DECIMAL(3,1) -- 成绩
);
```
接下来,我们可以插入一些初始数据到这两个表中:
```sql
INSERT INTO message (sno, sname, birthday, major)
VALUES ('001', '张三', '1998-01-01', '计算机科学');
INSERT INTO score (sno, cno, cname, sscore)
VALUES ('001', 101, '数学', 85.0);
```
对于Java Web项目,你可以使用JDBC(Java Database Connectivity)来连接数据库和处理数据。这里是一个简单的示例,展示如何接收用户提交的成绩,并查询所有学生的所有成绩:
```java
import java.sql.*;
public class ScoreController {
private static final String URL = "jdbc:mysql://localhost/student";
private static final String USER = "username";
private static final String PASS = "password";
public static void main(String[] args) {
try {
// 连接数据库
Connection conn = DriverManager.getConnection(URL, USER, PASS);
// 提交成绩(例如POST请求)
int studentId = 1; // 假设已从表单获取到
double score = 90.0;
PreparedStatement pstmt = conn.prepareStatement("INSERT INTO score (sno, cno, cname, sscore) VALUES (?, ?, ?, ?)");
pstmt.setInt(1, studentId);
pstmt.setInt(2, 202); // 假设这是新课程编号
pstmt.setString(3, "英语");
pstmt.setDouble(4, score);
pstmt.executeUpdate();
// 查询成绩
ResultSet rs = conn.createStatement().executeQuery("SELECT * FROM score WHERE sno = ?");
while (rs.next()) {
System.out.println(rs.getInt("sno") + ": " + rs.getString("cname") + " - " + rs.getDouble("sscore"));
}
rs.close();
pstmt.close();
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
```
阅读全文