第3关:博客系统数据库设计与实现之删除
任务描述
本关任务:通过 JDBC 的方式在 MySQL 表 t_user 中删除一条指定用户 ID 的数据。
相关知识
为了完成本关任务,你需要掌握:JDBC 如何删除数据库中的数据。
- 首先,我们需要加载(注册)数据库驱动(到 JVM );
Class.forName("com.mysql.jdbc.Driver");
-
建立(获取)数据库连接;
//参数:1.JDBC URL 2.数据库用户名 2. 数据库密码
Connection con = DriverManager.getConnection(url, user, password);
-
创建(获取)数据库操作对象;
PreparedStatement preparedStatement(String sql) :主要用来预编译 SQL 语句,并且执行。解决了 sql 注入的漏洞
-
定义操作的 SQL 语句;
sql = "DELETE FROM a WHERE id=?";
-
执行数据库操作;
PreparedStatement ps=conn.prepareStatement(sql);
ps.setInt(1, 1); // 设置 id 值为 1
-
返回的结果是影响的行数;
int count =ps.executeUpdate();
-
关闭对象,回收数据库资源(关闭数据库操作对象-->关闭连接)。
ps.close();
con.close();
相关数据说明
用户表实体类:User.java;
import java.util.Date;
public class User {
private Integer userId; // 用户ID
private String userName; // 用户名称
private String passWord; // 用户密码
//省略构造器和 getter 和 setter 方法
}
MySQL 数据库 mydb;
用户表 t_user;
列名 | 类型 | 非空 | 注释 |
---|---|---|---|
userId | int | √ | 用户ID 主键 |
userName | varchar | √ | 用户名 |
passWord | varchar | √ | 用户密码 |
MySQL 连接配置:
-
Driver:com.mysql.jdbc.Driver;
-
URL:jdbc:mysql://localhost:3306/mydb?characterEncoding=UTF-8;
-
user:root;
-
password:123123。
编程要求
在右侧编辑器 Begin-End 处补充代码,通过 JDBC 的方式在 MySQL 表 t_user 中删除一条指定用户 ID 的数据,具体要求如下:
-
在 User.java 文件中定义了一个 User 用户类,点击代码文件可以进行查看该类的属性和方法;
-
在 DeleteUser 类中定义了一个 deleteUser(int userID) 方法,删除表 t_user 中的用户 ID 与参数所提供的的用户 ID 一致的数据,最后返回结果影响行数。
测试说明
平台将使用测试集运行你编写的程序代码,若全部的运行结果正确,则通关。 可在右侧“测试结果”区查看具体的测试集详情。
测试输入:无
预期输出:
删除用户成功
userId userName passWord
1 sunfeng 147258
2 dv 123456
代码实现:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
public class DeleteUser {
private static final String driver = "com.mysql.jdbc.Driver";
private static final String url = "jdbc:mysql://localhost:3306/mydb?useUnicode=true&characterEncoding=UTF-8";
private static final String username = "root"; // 数据库的用户名
private static final String password = "123123"; // 数据库的密码:这个是自己安装数据库的时候设置的,每个人不同。
private static Connection conn = null; // 声明数据库连接对象
private static PreparedStatement ps = null; // 声明(获取)数据库操作对象
public static int deleteUser(int userID) {
// 请在下面的Begin-End之间按照注释中给出的提示编写正确的代码
/********** Begin **********/
try {
// 加载(注册)数据库驱动(到JVM)
Class.forName(driver);
// 建立(获取)数据库连接
conn = DriverManager.getConnection(url, username, password);
// 定义操作的SQL语句
String sql = "DELETE FROM t_user WHERE userID=?";
// 执行数据库操作
ps = conn.prepareStatement(sql);
ps.setInt(1, userID);
// 返回的结果是影响的行数
return ps.executeUpdate();
} catch (Exception e) {
e.printStackTrace();
}finally {
// 关闭对象,回收数据库资源
try {
if(ps != null){
ps.close();
}
if(conn != null){
conn.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
return 0;
/********** End **********/
}
}