摘要:比如将建立连接的代码放入工具类里面,工具类提供给外界一个获取的方法,需要的时候直接调用方法即可。
在之前的这篇博客里面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工具类,现在给出工具类的全部代码
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对象加载输入流is properties.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(); } } }}
利用工具类,再来重新写一下之前的修改密码,注册账号,注销账号的方法
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 "注册成功"; }}
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/123004.html
摘要:如上海北京等管理员自己创建其他地方的学校管理员创建的课程。包含名字性别年龄等学员查询可上课程学员选课,选择学校课程,并付款。课程价格,周期课程价格,周期课程价格,周期创建讲师属于北京校区,属于上海校区。 作业需求 创建北京、上海 2 所学校 创建linux , python , go 3个课程,linuxpy在北京开, go 在上海开 课程包含,周期,价格,通过学校创建课程 通过学校...
摘要:是访问数据库的标准规范。提供了一种基准据此可以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序。代码如下工具类数据库驱动注册失败提供获取连接的方法获得连接返回连接 本文为大家介绍 Java 如何使用JDBC 连接 MySQL 数据库。 JDBC概述 JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java A...
摘要:是访问数据库的标准规范。提供了一种基准据此可以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序。代码如下工具类数据库驱动注册失败提供获取连接的方法获得连接返回连接 本文为大家介绍 Java 如何使用JDBC 连接 MySQL 数据库。 JDBC概述 JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java A...
阅读 1224·2021-11-11 16:54
阅读 876·2021-10-19 11:44
阅读 1337·2021-09-22 15:18
阅读 2444·2019-08-29 16:26
阅读 2946·2019-08-29 13:57
阅读 3094·2019-08-26 13:32
阅读 1080·2019-08-26 11:58
阅读 2328·2019-08-26 10:37