在之前的这篇博客里面MySQL笔记 —— jdbc连接数据库(增删改查,sql注入,网站登录检查)
写了网站登录检查的代码,通过将用户输入的用户名和密码与数据库中存储的用户名和密码进行比较,如果一致则登录成功,不一致则登陆失败

现在再给出网站登录列表中的,修改密码,注册账号,注销账号功能

先给出userInfo用户信息表的数据

package mysql;import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;public class LoginUpdate {public static void main(String[] args) throws Exception {System.out.println("修改密码");String update = update("654321", "root");System.out.println(update);System.out.println("注册账号");String insert = insert("demo","222222");System.out.println(insert);System.out.println("注销账号");String delete = delete("test");System.out.println(delete);}//修改密码public static String update(String password,String username) throws Exception{Class.forName("com.mysql.jdbc.Driver");Connection conn = DriverManager.getConnection("jdbc:mysql://master:3306/show1", "root", "123456");String sql = "update userInfo set password=? where username=?";PreparedStatement ps = conn.prepareStatement(sql);ps.setString(1,password);ps.setString(2,username);int i = ps.executeUpdate();conn.close();ps.close();if(i!=1){return "修改失败";}return "修改成功";}//注册账号public static String insert(String username,String password) throws Exception{Class.forName("com.mysql.jdbc.Driver");Connection conn = DriverManager.getConnection("jdbc:mysql://master:3306/show1", "root", "123456");String sql = "insert into userInfo values(?,?)";PreparedStatement ps = conn.prepareStatement(sql);ps.setString(1,username);ps.setString(2,password);int i = ps.executeUpdate();conn.close();ps.close();if(i!=1){return "注册失败";}return "注册成功";}//注销账号public static String delete(String username) throws Exception{Class.forName("com.mysql.jdbc.Driver");Connection conn = DriverManager.getConnection("jdbc:mysql://master:3306/show1", "root", "123456");String sql = "delete from userInfo where username=?";PreparedStatement ps = conn.prepareStatement(sql);ps.setString(1,username);int i = ps.executeUpdate();conn.close();ps.close();if(i!=1){return "注销失败";}return "注销成功";}
}


查询一下数据库里面的表,select * from userInfo;

密码确实被修改了,test用户被注销,新增了一个demo用户

jdbc工具类

现在来思考一个问题,上面代码里面有三个功能,修改密码,注册账号,注销账号。三个功能分别对应三个方法,但是方法内的语句有大量重复的地方,比如获取驱动和获取连接的代码,获取执行器,以及最后关闭的代码其实都是重复的。这不符合我们写代码的精简思想,所以能不能把这些重复的代码都提取出来,放进一个工具类里面。比如将建立连接的代码放入工具类里面,工具类提供给外界一个获取的方法,需要的时候直接调用方法即可。

这个工具类就是jdbc工具类,现在给出工具类的全部代码

package mysql;import sun.security.util.Password;import java.io.InputStream;
import java.sql.*;
import java.util.Properties;public class JDBCUtil {private static String URL;private static String DRIVER;private static String USERNAME;private static String PASSWORD;private static Connection conn=null;private static PreparedStatement ps=null;private static ResultSet rs=null;static{try{//获取配置文件里面的参数信息Properties properties = new Properties();//利用反射加载配置文件InputStream is = JDBCUtil.class.getClassLoader().getResourceAsStream("mysql.properties");//利用Properties对象加载输入流isproperties.load(is);DRIVER=properties.getProperty("driver");URL=properties.getProperty("url");USERNAME=properties.getProperty("username");PASSWORD=properties.getProperty("password");//获取驱动Class.forName(DRIVER);//获取连接conn=DriverManager.getConnection(URL,USERNAME,PASSWORD);}catch(Exception e){e.printStackTrace();}}//获取连接public static Connection getConn(){return conn;}//获取执行器public static PreparedStatement getPs(String sql){try {ps = conn.prepareStatement(sql);} catch (SQLException e) {e.printStackTrace();}return ps;}//获取查询语句的结果集public static ResultSet getRs(){try {rs=ps.executeQuery();} catch (SQLException e) {e.printStackTrace();}return rs;}//获取增删改语句的结果集public static int update(){int i=0;try {i=ps.executeUpdate();} catch (SQLException e) {e.printStackTrace();}return i;}//给执行器传参public static void setPs(String...args){try{for (int i = 0; i < args.length; i++) {ps.setString(i+1,args[i]);}} catch (SQLException e) {e.printStackTrace();}}//关闭public static void closeAll(){if(rs!=null){try {rs.close();} catch (SQLException e) {e.printStackTrace();}}if(ps!=null){try {ps.close();} catch (SQLException e) {e.printStackTrace();}}if(conn!=null){try {conn.close();} catch (SQLException e) {e.printStackTrace();}}}
}

注意代码中用到了mysql.properties配置文件,这个文件要自己去创建

里面的内容为

driver=com.mysql.jdbc.Driver
url=jdbc:mysql://master:3306/show1
username=root
password=123456

这样做的好处是,同一份JDBCUtil代码可以被不同的人使用,但大家的数据库和ip地址等信息是不同的。因此将这些链接信息都放入配置文件中,这样哪怕在不同的主机上使用工具类代码,也不需要修改JDBCUtil类,只需要修改配置文件即可。

利用工具类,再来重新写一下之前的修改密码,注册账号,注销账号的方法

package mysql;public class LoginUpdate1 {public static void main(String[] args) {System.out.println("修改密码");String update = update("root", "123456");System.out.println(update);System.out.println("------------------");System.out.println("注册账号");String show = insert("show", "333333");System.out.println(show);System.out.println("------------------");System.out.println("注销账号");String demo = delete("demo");System.out.println(demo);JDBCUtil.closeAll();}public static String update(String username,String password){JDBCUtil.getConn();String sql = "update userInfo set password=? where username=?";JDBCUtil.getPs(sql);JDBCUtil.setPs(password,username);int i = JDBCUtil.update();if(i!=1){return "修改失败";}return "修改成功";}public static String insert(String username,String password){JDBCUtil.getConn();String sql = "insert into userInfo values(?,?)";JDBCUtil.getPs(sql);JDBCUtil.setPs(username,password);int i = JDBCUtil.update();if(i!=1){return "注册失败";}return "注册成功";}public static String delete(String username){JDBCUtil.getConn();String sql = "delete from userInfo where username=?";JDBCUtil.getPs(sql);JDBCUtil.setPs(username);int i = JDBCUtil.update();if(i!=1){return "注销失败";}return "注册成功";}
}


MySQL笔记 —— jdbc工具类(网站的修改密码,注册账号,注销账号功能)相关推荐

  1. MySQL数据库学习笔记(十一)----DAO设计模式实现数据库的增删改查(进一步封装JDBC工具类)...

    [声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...

  2. java jdbc工具类抽取_JavaWeb入门(三):JDBC工具类的抽取

    一.通过上篇文章,我们已经可以使用JDBC对数据库中的表进行增删改查啦(JDBC的基本使用:https://www.cnblogs.com/Infancy/p/12499806.html),我们对上篇 ...

  3. 精选28款超实用的“工具类”网站

    28个实用"工具类"网站,一次性打包给你们!都是精选出来的哟,和大家交个朋友~ 目录如下: 导航类(8个) 图形处理类(8个) 素材类(4个) 生成器类(4个) 格式转换类(2个) ...

  4. java 连接mysql工具类_java连接Mysql数据库的工具类

    一个封装好的链接Mysql数据库的工具类,可以方便的获取Connection对象关闭Statement.ResultSet.Statment对象等等 复制代码 代码如下: package myUtil ...

  5. jdbc工具类 配置版本 20210412_222527.mp4

    jdbc工具类 配置版本 20210412_222527.mp4 编写jdbc工具类,要求,代码要灵活,可随时变更登陆用户与连接的数据库 分析: 可以使用基本的写法加上配置 让配置来提供变化的数据 避 ...

  6. Java JDBC工具类

    虽然现在都有框架封装 , 基本没人用这个了 . 但是如果经常在N个环境N个数据库之间查询数据  , 偶尔用下这个也是挺方便的~ package com.xbz;import com.alibaba.f ...

  7. 抽取JDBC工具类:JDBCUtils

    ## 抽取JDBC工具类:JDBCUtils * 目的:简化书写 * 分析:1.注册驱动也抽取2.抽取一个方法获取连接对象 * 需求:不想传递参数(麻烦),还得保证工具类的通用性 * 解决:配置文件j ...

  8. 10.statement对象实例(executeUpdate方法以及executeQuery方法),JDBC工具类编写

    1.JDBC工具类: 2.增删改:executeUpdate() 删除指定数据: 插入一条数据: 更新数据: 3.查:executeQuery() statement对象:Statement 是 Ja ...

  9. 存储过程排版工具_文案创作者必备的7个写作辅助工具类网站,记得收藏

    写作作为个人思想的表达渠道,从古至今一直就是一件被广为传承的事情,以前大家在纸上写写画画,修修改改的.自从有了电脑,大家写作的成本越来越低,随时都可以把自己所想传播出去,特别是进入了移动互联网时代,自 ...

最新文章

  1. python月薪是多少-2019年 Python就业市场行情好不好, 薪资多少?
  2. 一步一步学Ruby(七):数学表达式
  3. 【原】NIO通信模型和BIO通信模型
  4. 190530每日一句
  5. 368.最大整数子集
  6. 深度装机大师一键重装_手把手教你深度装机大师u盘装系统教程
  7. Javashop 7.0 商城Https协议修改部分
  8. 万字详解 阿里面试真题:请你说说索引的原理
  9. 485芯片中slew-rate-limited是什么意思(转)
  10. django线上环境配置
  11. solidity基础学习
  12. PCA参数,属性,接口列表
  13. MOOC《Python网络爬虫和信息提取》(第11次)网络爬虫之框架(第4周)
  14. 力扣算法学习计划打卡:第六天
  15. [问题] npm ERR! errno -4048
  16. 深入理解Java虚拟机——JVM垃圾回收机制和垃圾收集器详解
  17. 20210728用树莓派 DIY 四轴飞行器(硬件、故障保护、遥控、飞行模式)
  18. 产品经理,你真的理解俞军的产品价值公式吗?
  19. windows 重启网络的cmd命令
  20. 【解决方法】ECall 方法必须打包到系统模块中

热门文章

  1. TTL与RS-485电平转换芯片MAX485/MAX3485
  2. Jquery解决视频播放过程中定时弹出确认窗口
  3. 【保姆级教程】彻底卸载Anaconda
  4. charles linux版本,Charles 下载
  5. Java IO流 - 字节流的使用详细介绍
  6. GBK、UTF-8、UTF-32、乱码原因
  7. 粒子群算法PSO优化最小二乘支持向量机做回归预测,多输入单输出模型。PSO-LSSVM
  8. 计算机网络(17)——虚电路网络与数据报网络
  9. GDOUCTF2023 Writeup
  10. 春运火车票开售 多地火车站启用刷脸通关