热门标签 | 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实现大数乘法的分治算法,包括输入数据的处理、普通大数乘法的结果和Karatsuba大数乘法的结果。通过改变long类型可以适应不同范围的大数乘法计算。 ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • 本文讨论了如何优化解决hdu 1003 java题目的动态规划方法,通过分析加法规则和最大和的性质,提出了一种优化的思路。具体方法是,当从1加到n为负时,即sum(1,n)sum(n,s),可以继续加法计算。同时,还考虑了两种特殊情况:都是负数的情况和有0的情况。最后,通过使用Scanner类来获取输入数据。 ... [详细]
  • 本文介绍了使用postman进行接口测试的方法,以测试用户管理模块为例。首先需要下载并安装postman,然后创建基本的请求并填写用户名密码进行登录测试。接下来可以进行用户查询和新增的测试。在新增时,可以进行异常测试,包括用户名超长和输入特殊字符的情况。通过测试发现后台没有对参数长度和特殊字符进行检查和过滤。 ... [详细]
  • Spring特性实现接口多类的动态调用详解
    本文详细介绍了如何使用Spring特性实现接口多类的动态调用。通过对Spring IoC容器的基础类BeanFactory和ApplicationContext的介绍,以及getBeansOfType方法的应用,解决了在实际工作中遇到的接口及多个实现类的问题。同时,文章还提到了SPI使用的不便之处,并介绍了借助ApplicationContext实现需求的方法。阅读本文,你将了解到Spring特性的实现原理和实际应用方式。 ... [详细]
  • 开发笔记:Java是如何读取和写入浏览器Cookies的
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了Java是如何读取和写入浏览器Cookies的相关的知识,希望对你有一定的参考价值。首先我 ... [详细]
  • Python爬虫中使用正则表达式的方法和注意事项
    本文介绍了在Python爬虫中使用正则表达式的方法和注意事项。首先解释了爬虫的四个主要步骤,并强调了正则表达式在数据处理中的重要性。然后详细介绍了正则表达式的概念和用法,包括检索、替换和过滤文本的功能。同时提到了re模块是Python内置的用于处理正则表达式的模块,并给出了使用正则表达式时需要注意的特殊字符转义和原始字符串的用法。通过本文的学习,读者可以掌握在Python爬虫中使用正则表达式的技巧和方法。 ... [详细]
  • 2021最新总结网易/腾讯/CVTE/字节面经分享(附答案解析)
    本文分享作者在2021年面试网易、腾讯、CVTE和字节等大型互联网企业的经历和问题,包括稳定性设计、数据库优化、分布式锁的设计等内容。同时提供了大厂最新面试真题笔记,并附带答案解析。 ... [详细]
  • 目录1、将mysql数据导出到SQL文件中(数据库存在的情况)2、将现有的sql文件数据导入到数据库中(前提数据库存在) 3、利用Navicat导出SQL文件和导入SQL文件1)从 ... [详细]
  • 本文介绍了一个Java猜拳小游戏的代码,通过使用Scanner类获取用户输入的拳的数字,并随机生成计算机的拳,然后判断胜负。该游戏可以选择剪刀、石头、布三种拳,通过比较两者的拳来决定胜负。 ... [详细]
  • 本文介绍了在Java中gt、gtgt、gtgtgt和lt之间的区别。通过解释符号的含义和使用例子,帮助读者理解这些符号在二进制表示和移位操作中的作用。同时,文章还提到了负数的补码表示和移位操作的限制。 ... [详细]
  • JavaSE笔试题-接口、抽象类、多态等问题解答
    本文解答了JavaSE笔试题中关于接口、抽象类、多态等问题。包括Math类的取整数方法、接口是否可继承、抽象类是否可实现接口、抽象类是否可继承具体类、抽象类中是否可以有静态main方法等问题。同时介绍了面向对象的特征,以及Java中实现多态的机制。 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • 基于Axis、XFire、CXF的webservice客户端调用示例
    本文介绍了如何使用Axis、XFire、CXF等工具来实现webservice客户端的调用,以及提供了使用Java代码进行调用的示例。示例代码中设置了服务接口类、地址,并调用了sayHello方法。 ... [详细]
  • 延迟注入工具(python)的SQL脚本
    本文介绍了一个延迟注入工具(python)的SQL脚本,包括使用urllib2、time、socket、threading、requests等模块实现延迟注入的方法。该工具可以通过构造特定的URL来进行注入测试,并通过延迟时间来判断注入是否成功。 ... [详细]
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社区 版权所有