博客系统数据库设计与实现之修改(java)
根据用户 ID 修改用户的名称和密码。首先,我们需要加载(注册)数据库驱动(到 JVM );Class.forName("com.mysql.jdbc.Driver");建立(获取)数据库连接;//参数:1.JDBC URL 2.数据库用户名 2. 数据库密码Connection con = DriverManager.getConnection(url,以上就是今天要讲的内容,本文仅仅简单介绍了
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
目录
一、题目:
任务:根据用户 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 = "update t_user set name=? where id=?";
-
执行数据库操作;
PreparedStatement ps=conn.prepareStatement(sql);
ps.setString(1, "abc"); // 设置 name 值为 abc
ps.setInt(2, 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:*******。(自己数据库的登入密码)
四、编程要求
在右侧编辑器 Begin-End 处补充代码,根据用户 ID 修改用户的名称和密码,具体要求如下:
-
在 User.java 文件中定义了一个 User 用户类,点击代码文件可以进行查看该类的属性和方法;
-
在 InsertUser 类中定义了一个 updateUser(int userID,String userName,String passWord) 方法,根据用户 ID 查找到用户信息,然后将用户名称和密码修改为方法参数所带的名称和密码,最后返回结果影响行数。
五、Mysql数据库的创建
1.Win+R,输入cmd
2.mysql服务器的启动
输入:
net start mysql
3.登入mysql数据库
先输入:
mysql -uroot -p
再输入自己设置的登入密码。
4.建数据库、建表
全部代码
提示:(在cmd环境中执行时,要一句一句的写入)
t_user.sql
create database if not EXISTS `mydb`;
-- ----------------------------
-- Table structure for t_user
-- ----------------------------
use `mydb`;
DROP TABLE IF EXISTS `t_user`;
CREATE TABLE `t_user` (
`userId` int(8) NOT NULL AUTO_INCREMENT COMMENT '用户ID',
`userName` varchar(32) NOT NULL COMMENT '用户名',
`passWord` varchar(32) NOT NULL COMMENT '用户密码',
PRIMARY KEY (`userId`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;
INSERT INTO `t_user` VALUES (1, 'sunfeng', '147258');
INSERT INTO `t_user` VALUES (2, 'dv', '123456');
INSERT INTO `t_user` VALUES (3, 'suning', '845966');
六、Java与数据库的连接及查询(用来测试,前期准备)
1.文件路径(位置):
提示:Text为Java项目,step1为包,引用数据库Mysql-connector(前提下载Mysql-connector(JDBC),再鼠标右键Text项目,构建路径,添加进来即可)
2.JDBCInsert.java文件
(相关提示已写在代码里)
package step1;
import java.sql.*;
public class JDBCInsert {
public static void main(String[] args) {
// 请在下面的Begin-End之间按照注释中给出的提示编写正确的代码
/********** Begin **********/
Connection connection = null;
PreparedStatement preparedStatement = null;
ResultSet resultSet = null;
try {
//String driverClass = "com.mysql.jdbc.Driver";//版本问题,Mysql低于5.8的用这条加载语句
String driverClass="com.mysql.cj.jdbc.Driver";
String url = "jdbc:mysql://localhost:3306/mydb?characterEncoding=UTF-8";
String user = "root";
String password= "******";//自己Mysql设置的登入密码
// 获取数据库连接驱动
Class.forName(driverClass);
// 连接数据库
connection = DriverManager.getConnection(url, user, password);
// 编写查询 SQL
String sql = "SELECT * FROM t_user";
// 动态执行 SQL 语句
preparedStatement = connection.prepareStatement(sql);
// 获取查询结果集
resultSet = preparedStatement.executeQuery();
// 按照指定格式输出查询结果集
while (resultSet.next()){
System.out.println(resultSet.getString("userId")+"\t"+resultSet.getString("userName")+"\t"+resultSet.getString("passWord"));
}
} catch (Exception e) {
e.printStackTrace();
// 关闭资源
}finally {
try {
if(resultSet != null){
resultSet.close();
}
if(preparedStatement != null){
preparedStatement.close();
}
if(connection != null){
connection.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
/********** End **********/
}
}
3.效果截图:
七、插入模块
1.文件路径(位置):
2.InsertUser.java(数据库的连接及数据的插入)
package step2;
import java.sql.*;
public class InsertUser {
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 = "*****"; // 数据库的密码:这个是自己安装数据库的时候设置的,每个人不同。
private static Connection conn = null; // 声明数据库连接对象
private static PreparedStatement ps = null; // 声明(获取)数据库操作对象
public static int insertUser(User user) {
// 请在下面的Begin-End之间按照注释中给出的提示编写正确的代码
/********** Begin **********/
// 定义影响行数
int i = 0;
try {
// 加载(注册)数据库驱动(到JVM)
Class.forName(driver);
// 建立(获取)数据库连接
conn = DriverManager.getConnection(url, username, password);
// 定义操作的SQL语句
String sql = "INSERT INTO t_user (userId,userName,passWord) VALUES(?,?,?)";
// 执行数据库操作
ps = conn.prepareStatement(sql);
ps.setInt(1, user.getUserId());
ps.setString(2, user.getUserName());
ps.setString(3, user.getPassWord());
// 返回的结果是影响的行数
i = 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 i;
/********** End **********/
}
}
3.User.java(方法类)
package step2;
public class User {
private Integer userId; // 用户 ID
private String userName; // 用户名称
private String passWord; // 用户密码
// 无参构造
public User(){}
// 有参构造
public User(Integer userId, String userName, String passWord) {
this.userId = userId;
this.userName = userName;
this.passWord = passWord;
}
// 获取和设置用户属性
public Integer getUserId() {
return userId;
}
public void setUserId(Integer userId) {
this.userId = userId;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getPassWord() {
return passWord;
}
public void setPassWord(String passWord) {
this.passWord = passWord;
}
}
4.JDBCTest.java(测试类)
package step2;
public class JDBCTest {
public static void main(String[] args) {
User u = new User(4,"xiaoming","857857");
int i = InsertUser.insertUser(u);
if (i == 1){
System.out.println("添加用户成功");
}else {
System.out.println("添加用户失败");
}
}
}
5.效果截图:
八、删除模块
1.文件位置(路径):
2.DeleteUser.java文件(连接数据库、删除操作)
package step3;
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 = "******"; // 数据库的密码:这个是自己安装数据库的时候设置的,每个人不同。
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 **********/
}
}
3.User.java(方法类)
package step3;
public class User {
private Integer userId; // 用户 ID
private String userName; // 用户名称
private String passWord; // 用户密码
// 无参构造
public User(){}
// 有参构造
public User(Integer userId, String userName, String passWord) {
this.userId = userId;
this.userName = userName;
this.passWord = passWord;
}
// 获取和设置用户属性
public Integer getUserId() {
return userId;
}
public void setUserId(Integer userId) {
this.userId = userId;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getPassWord() {
return passWord;
}
public void setPassWord(String passWord) {
this.passWord = passWord;
}
}
4.JDBCTest.java(测试类)
package step3;
public class JDBCTest {
public static void main(String[] args) {
int i = DeleteUser.deleteUser(3);
if (i == 1){
System.out.println("删除用户成功");
}else {
System.out.println("删除用户失败");
}
}
}
5.效果截图:
九、修改信息模块
1.文件路径(位置):
2.UpdateUser.java(连接数据库及修改信息操作)
package step4;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
public class UpdateUser {
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 = "*****"; // 数据库的密码:这个是自己安装数据库的时候设置的,每个人不同。
private static Connection conn = null; // 声明数据库连接对象
private static PreparedStatement ps = null; // 声明(获取)数据库操作对象
public static int updateUser(int userID,String userName,String passWord) {
// 请在下面的Begin-End之间按照注释中给出的提示编写正确的代码
/********** Begin **********/
try {
// 加载(注册)数据库驱动(到JVM)
Class.forName(driver);
// 建立(获取)数据库连接
conn = DriverManager.getConnection(url, username, password);
// 定义操作的SQL语句
String sql = "update t_user set UserName=?,passWord=? where userID=?";
// 执行数据库操作
ps = conn.prepareStatement(sql);
ps.setString(1,userName);
ps.setString(2,passWord);
ps.setInt(3, 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 **********/
}
}
3.User.java(方法类)
package step4;
public class User {
private Integer userId; // 用户 ID
private String userName; // 用户名称
private String passWord; // 用户密码
// 无参构造
public User(){}
// 有参构造
public User(Integer userId, String userName, String passWord) {
this.userId = userId;
this.userName = userName;
this.passWord = passWord;
}
// 获取和设置用户属性
public Integer getUserId() {
return userId;
}
public void setUserId(Integer userId) {
this.userId = userId;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getPassWord() {
return passWord;
}
public void setPassWord(String passWord) {
this.passWord = passWord;
}
}
4.JDBCTest.java(测试类)
package step4;
public class JDBCTest {
public static void main(String[] args) {
int i = UpdateUser.updateUser(2,"chuyang","789456");
if (i == 1){
System.out.println("修改用户信息成功");
}else {
System.out.println("修改用户信息失败");
}
}
}
5.效果截图
十、总结
提示:这里对文章进行总结:
例如:以上就是今天要讲的内容,本文仅仅简单介绍了博客系统数据库设计与实现,以及相关的数据库的创建、数据库的连接、Java与数据库的增删改查等操作。
更多推荐
所有评论(0)