热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

博客系统数据库设计与实现之修改(java)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档目录一、题目:二、相关知识三、相关数据说明四、编程要求

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


目录

一、题目:

二、相关知识

三、相关数据说明

四、编程要求

五、Mysql数据库的创建

 六、Java与数据库的连接及查询(用来测试,前期准备)

七、插入模块

八、删除模块

九、修改信息模块

十、总结




一、题目:

任务:根据用户 ID 修改用户的名称和密码。


二、相关知识

为了完成本关任务,你需要掌握:JDBC 如何插入数据到数据库。


  1. 首先,我们需要加载(注册)数据库驱动(到 JVM );


    1. Class.forName("com.mysql.jdbc.Driver");

  1. 建立(获取)数据库连接;


    1. //参数:1.JDBC URL 2.数据库用户名 2. 数据库密码
    2. Connection con = DriverManager.getConnection(url, user, password);
  2. 创建(获取)数据库操作对象;


    1. PreparedStatement  preparedStatement(String sql)    :主要用来预编译SQL语句,并且执行。解决了sql注入的漏洞
  3. 定义操作的 SQL 语句;


    1. sql = "update t_user set name=? where id=?";

  1. 执行数据库操作;


    1. PreparedStatement ps=conn.prepareStatement(sql);
    2. ps.setString(1, "abc"); // 设置 name 值为 abc
    3. ps.setInt(2, 1); // 设置 id 值为 1
  2. 返回的结果是影响的行数;


    1. int count =ps.executeUpdate();
  3. 关闭对象,回收数据库资源(关闭数据库操作对象-->关闭连接)。


    1. ps.close();
    2. con.close();

三、相关数据说明

用户表实体类:User.java;



  1. import java.util.Date;
  2. public class User {
  3. private Integer userId; // 用户ID
  4. private String userName; // 用户名称
  5. private String passWord; // 用户密码
  6. //省略构造器和 getter 和 setter 方法
  7. }

MySQL 数据库 mydb;(需要建的数据库)

用户表 t_user;


列名类型非空注释
userIdint用户ID 主键
userNamevarchar用户名
passWordvarchar用户密码

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);// 编写查询 SQLString 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; // 用户 IDprivate 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; // 用户 IDprivate 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; // 用户 IDprivate 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与数据库的增删改查等操作。


推荐阅读
  • 如何在Java中使用DButils类
    这期内容当中小编将会给大家带来有关如何在Java中使用DButils类,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。D ... [详细]
  • 本文详细介绍了如何在 Linux 系统上安装 JDK 1.8、MySQL 和 Redis,并提供了相应的环境配置和验证步骤。 ... [详细]
  • DAO(Data Access Object)模式是一种用于抽象和封装所有对数据库或其他持久化机制访问的方法,它通过提供一个统一的接口来隐藏底层数据访问的复杂性。 ... [详细]
  • 本文介绍如何使用 Python 的 DOM 和 SAX 方法解析 XML 文件,并通过示例展示了如何动态创建数据库表和处理大量数据的实时插入。 ... [详细]
  • 本文详细介绍了如何在 Django 项目中使用 Admin 管理后台,包括创建超级用户、启动项目、管理数据模型和修改用户密码等步骤。 ... [详细]
  • 在使用 Cacti 进行监控时,发现已运行的转码机未产生流量,导致 Cacti 监控界面显示该转码机处于宕机状态。进一步检查 Cacti 日志,发现数据库中存在 SQL 查询失败的问题,错误代码为 145。此问题可能是由于数据库表损坏或索引失效所致,建议对相关表进行修复操作以恢复监控功能。 ... [详细]
  • 基于Net Core 3.0与Web API的前后端分离开发:Vue.js在前端的应用
    本文介绍了如何使用Net Core 3.0和Web API进行前后端分离开发,并重点探讨了Vue.js在前端的应用。后端采用MySQL数据库和EF Core框架进行数据操作,开发环境为Windows 10和Visual Studio 2019,MySQL服务器版本为8.0.16。文章详细描述了API项目的创建过程、启动步骤以及必要的插件安装,为开发者提供了一套完整的开发指南。 ... [详细]
  • Unity与MySQL连接过程中出现的新挑战及解决方案探析 ... [详细]
  • 本文介绍了如何利用Shell脚本高效地部署MHA(MySQL High Availability)高可用集群。通过详细的脚本编写和配置示例,展示了自动化部署过程中的关键步骤和注意事项。该方法不仅简化了集群的部署流程,还提高了系统的稳定性和可用性。 ... [详细]
  • 本文介绍了如何利用Struts1框架构建一个简易的四则运算计算器。通过采用DispatchAction来处理不同类型的计算请求,并使用动态Form来优化开发流程,确保代码的简洁性和可维护性。同时,系统提供了用户友好的错误提示,以增强用户体验。 ... [详细]
  • Nginx 反向代理配置与应用指南
    本文详细介绍了 Nginx 反向代理的配置与应用方法。首先,用户可以从官方下载页面(http://nginx.org/en/download.html)获取最新稳定版 Nginx,推荐使用 1.14.2 版本。下载并解压后,通过双击 `nginx.exe` 文件启动 Nginx 服务。文章进一步探讨了反向代理的基本原理及其在实际应用场景中的配置技巧,包括负载均衡、缓存管理和安全设置等,为用户提供了一套全面的实践指南。 ... [详细]
  • 网站访问全流程解析
    本文详细介绍了从用户在浏览器中输入一个域名(如www.yy.com)到页面完全展示的整个过程,包括DNS解析、TCP连接、请求响应等多个步骤。 ... [详细]
  • php更新数据库字段的函数是,php更新数据库字段的函数是 ... [详细]
  • 解决Parallels Desktop错误15265的方法
    本文详细介绍了在使用Parallels Desktop时遇到错误15265的多种解决方案,包括检查网络连接、关闭代理服务器和修改主机文件等步骤。 ... [详细]
  • 本文详细解析了Java类加载系统的父子委托机制。在Java程序中,.java源代码文件编译后会生成对应的.class字节码文件,这些字节码文件需要通过类加载器(ClassLoader)进行加载。ClassLoader采用双亲委派模型,确保类的加载过程既高效又安全,避免了类的重复加载和潜在的安全风险。该机制在Java虚拟机中扮演着至关重要的角色,确保了类加载的一致性和可靠性。 ... [详细]
author-avatar
咖啡的因_411
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有