1.实验目的 (2)掌握JDBC的常用方法,能够通过JDBC存储、查询、更改MySql数据库。 2.实验内容和步骤 (1)在数据库里新建一个学生表,学生主要信息如下,需要建立主键; 学号 文本 性别 文本 姓名 文本 家庭住址 文本 出生年月 文本 联系电话 文本 (2)新建一个学生类; (3)新建一个主函数类; a) 主函数里新建插入学生方法;insertStu(传入学号、姓名、性别、家庭住址、出生年月、联系电话6个参数),无返回值; b) 主函数里新建根据学号删除学生的方法deleteStu,无返回值; c) 主函数里新建新建根据学号更新学生的方法;updateStu(传入学号、姓名、性别、家庭住址、出生年月、联系电话6个参数),无返回值。 d) 主函数里新建根据学号查询学生的方法,query(传入学号),返回一个学生对象; e) 主函数里新建Main函数,调用插入函数,插入2个男生,3个女生;再删除一个女生,再更新一个男生,再查询一个男生。
时间: 2024-04-21 17:27:54 浏览: 108
用JDBC向Students表中插入数据
本次实验需要使用Java编写JDBC程序,完成以下操作:
1. 在MySQL数据库中创建学生表,表结构如下:
```sql
CREATE TABLE `student` (
`id` int(11) NOT NULL AUTO_INCREMENT, -- 主键,自增长
`number` varchar(20) NOT NULL, -- 学号
`name` varchar(20) NOT NULL, -- 姓名
`gender` varchar(4) NOT NULL, -- 性别
`address` varchar(100) NOT NULL, -- 家庭住址
`birthday` varchar(20) NOT NULL, -- 出生年月
`phone` varchar(20) NOT NULL, -- 联系电话
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
```
2. 创建一个学生类,包含学号、姓名、性别、家庭住址、出生年月、联系电话等属性,以及对应的`get`和`set`方法;
```java
public class Student {
private int id; // 主键
private String number; // 学号
private String name; // 姓名
private String gender; // 性别
private String address; // 家庭住址
private String birthday; // 出生年月
private String phone; // 联系电话
// 构造方法、get/set方法省略
}
```
3. 创建一个主函数类,包含以下方法:
(1)插入学生方法`insertStu`,向学生表中插入一条学生记录;
```java
public static void insertStu(String number, String name, String gender, String address, String birthday, String phone) throws SQLException {
Connection conn = null;
PreparedStatement ps = null;
try {
// 获取数据库连接
conn = getConn();
// 构造SQL语句
String sql = "INSERT INTO student(number, name, gender, address, birthday, phone) VALUES (?, ?, ?, ?, ?, ?)";
// 创建PreparedStatement对象
ps = conn.prepareStatement(sql);
// 设置参数
ps.setString(1, number);
ps.setString(2, name);
ps.setString(3, gender);
ps.setString(4, address);
ps.setString(5, birthday);
ps.setString(6, phone);
// 执行SQL语句
ps.executeUpdate();
} finally {
// 释放资源
close(conn, ps, null);
}
}
```
(2)删除学生方法`deleteStu`,根据学号删除一条学生记录;
```java
public static void deleteStu(String number) throws SQLException {
Connection conn = null;
PreparedStatement ps = null;
try {
// 获取数据库连接
conn = getConn();
// 构造SQL语句
String sql = "DELETE FROM student WHERE number=?";
// 创建PreparedStatement对象
ps = conn.prepareStatement(sql);
// 设置参数
ps.setString(1, number);
// 执行SQL语句
ps.executeUpdate();
} finally {
// 释放资源
close(conn, ps, null);
}
}
```
(3)更新学生方法`updateStu`,根据学号更新一条学生记录;
```java
public static void updateStu(String number, String name, String gender, String address, String birthday, String phone) throws SQLException {
Connection conn = null;
PreparedStatement ps = null;
try {
// 获取数据库连接
conn = getConn();
// 构造SQL语句
String sql = "UPDATE student SET name=?, gender=?, address=?, birthday=?, phone=? WHERE number=?";
// 创建PreparedStatement对象
ps = conn.prepareStatement(sql);
// 设置参数
ps.setString(1, name);
ps.setString(2, gender);
ps.setString(3, address);
ps.setString(4, birthday);
ps.setString(5, phone);
ps.setString(6, number);
// 执行SQL语句
ps.executeUpdate();
} finally {
// 释放资源
close(conn, ps, null);
}
}
```
(4)查询学生方法`query`,根据学号查询一条学生记录;
```java
public static Student query(String number) throws SQLException {
Connection conn = null;
PreparedStatement ps = null;
ResultSet rs = null;
try {
// 获取数据库连接
conn = getConn();
// 构造SQL语句
String sql = "SELECT * FROM student WHERE number=?";
// 创建PreparedStatement对象
ps = conn.prepareStatement(sql);
// 设置参数
ps.setString(1, number);
// 执行查询操作
rs = ps.executeQuery();
// 解析查询结果
if (rs.next()) {
Student stu = new Student();
stu.setId(rs.getInt("id"));
stu.setNumber(rs.getString("number"));
stu.setName(rs.getString("name"));
stu.setGender(rs.getString("gender"));
stu.setAddress(rs.getString("address"));
stu.setBirthday(rs.getString("birthday"));
stu.setPhone(rs.getString("phone"));
return stu;
} else {
return null;
}
} finally {
// 释放资源
close(conn, ps, rs);
}
}
```
(5)主函数`main`,调用插入函数,插入2个男生,3个女生;再删除一个女生,再更新一个男生,再查询一个男生。
```java
public static void main(String[] args) throws SQLException {
// 插入2个男生
insertStu("20180001", "张三", "男", "北京市朝阳区", "2000-01-01", "13800138001");
insertStu("20180002", "李四", "男", "北京市海淀区", "2000-02-02", "13900139001");
// 插入3个女生
insertStu("20180003", "王五", "女", "北京市西城区", "2000-03-03", "13600136001");
insertStu("20180004", "赵六", "女", "北京市东城区", "2000-04-04", "13700137001");
insertStu("20180005", "周七", "女", "北京市丰台区", "2000-05-05", "13500135001");
// 删除一个女生
deleteStu("20180004");
// 更新一个男生
updateStu("20180002", "王麻子", "男", "北京市石景山区", "2000-02-02", "13900139002");
// 查询一个男生
Student stu = query("20180002");
System.out.println(stu.getNumber() + " " + stu.getName() + " " + stu.getGender() + " " + stu.getAddress() + " " + stu.getBirthday() + " " + stu.getPhone());
}
```
4. 连接MySQL数据库,获取数据库连接的方法`getConn`和释放资源的方法`close`,可以放在一个工具类中;
```java
public class JdbcUtil {
private static final String DRIVER = "com.mysql.jdbc.Driver";
private static final String URL = "jdbc:mysql://localhost:3306/test?useSSL=false&serverTimezone=UTC&characterEncoding=utf-8";
private static final String USERNAME = "root";
private static final String PASSWORD = "123456";
// 获取数据库连接
public static Connection getConn() throws SQLException {
try {
Class.forName(DRIVER);
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
return DriverManager.getConnection(URL, USERNAME, PASSWORD);
}
// 释放资源
public static void close(Connection conn, Statement stmt, ResultSet rs) {
try {
if (rs != null) {
rs.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
try {
if (stmt != null) {
stmt.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
try {
if (conn != null) {
conn.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
```
完成以上步骤后,运行主函数,即可在MySQL数据库中插入、删除、更新、查询学生记录。
阅读全文