比如把建立连接的代码放到一个工具类中,工具类提供了对外的访问方法,需要的时候可以直接调用方法。
在之前的博客中,Mysql notes-JDBC连接数据库(添加、删除、检查、sql注入、网站登录检查)写了网站登录检查的代码。通过比较用户输入的用户名和密码与数据库中存储的用户名和密码,如果一致,则登录成功,如果不一致,则登录失败。
现在在网站登录列表中给出修改密码,注册账号,注销账号的功能。
首先给出userInfo用户信息表的数据。
打包mysql导入Java . SQL . connection;导入Java . SQL . driver manager;导入Java . SQL . prepared statement;导入Java . SQL . SQL exception;公共类登录更新{ public static void main(string[]args)throws exception { system。out.println("更改密码");String update = update("654321 "," root ");System.out.println(更新);System.out.println("注册账户");String insert = insert("demo "," 222222 ");system . out . println(insert);System.out.println("销户");string delete = delete(" test ");System.out.println(删除);}//修改密码公共静态字符串更新(字符串密码,字符串用户名)throws exception { class . forname(" com . MySQL . JDBC . driver ");connection conn = driver manager . getconnection(" JDBC:MySQL://master:3306/show 1 "," root "," 123456 ");String sql = "更新userInfo设置密码=?其中用户名=?";prepared statement PS = conn . prepare statement(SQL);ps.setString(1,密码);ps.setString(2,用户名);int I = PS . execute update();conn . close();PS . close();如果(我!=1){返回“修改失败”;}返回“修改成功”;}//注册账号公共静态字符串插入(字符串用户名,字符串密码)throws exception { class . forname(" com . MySQL . JDBC . driver ");connection conn = driver manager . getconnection(" JDBC:MySQL://master:3306/show 1 "," root "," 123456 ");String sql = "insert into userInfo值(?,?)";prepared statement PS = conn . prepare statement(SQL);ps.setString(1,用户名);ps.setString(2,密码);int I = PS . execute update();conn . close();PS . close();如果(我!=1){返回“注册失败”;}返回“注册成功”;}//取消账号公共静态字符串删除(字符串用户名)throws exception { class . forname(" com . MySQL . JDBC . driver ");connection conn = driver manager . getconnection(" JDBC:MySQL://master:3306/show 1 "," root "," 123456 ");string SQL = " delete from userInfo where username =?";prepared statement PS = conn . prepare statement(SQL);ps.setString(1,用户名);int I = PS . execute update();conn . close();PS . close();如果(我!=1){ return“注销失败”;}返回“注销成功”;}}在数据库中查询表格,select * from userInfo
确实修改了密码,取消了测试用户,增加了一个演示用户。
jdbc工具类现在正在思考一个问题。上面的代码有三个功能,分别是修改密码,注册账号,注销账号。三个函数分别对应三个方法,但是方法中的语句有大量重复,比如获取驱动和连接的代码,获取执行器,最后关闭代码。这不符合我们精简代码编写的思路,那么我们能不能把这些重复的代码都提取出来放到一个工具类里?比如把建立连接的代码放到一个工具类中,工具类提供了对外的访问方法,需要的时候可以直接调用方法。
这个工具类是jdbc工具类,现在给出工具类的所有代码。
打包mysql导入sun . security . util . password;导入Java . io . inputstream;导入Java . SQL . *;导入Java . util . properties;公共类JDBCUtil {私有静态字符串URL私有静态字符串驱动程序;私有静态字符串用户名;私有静态字符串密码;私有静态连接连接=空;private static prepared statement PS = null;私有静态结果集rs = nullStatic{ try{ //获取配置文件中的参数信息Properties = new Properties();//加载配置文件InputStream is = JDBC util . class . getclass loader()。通过反射获取资源流(“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 = driver manager . get connection(URL,用户名,密码);} catch(Exception e){ e . printstacktrace();} }//获取连接公共静态连接getconn(){ return conn;}//获取执行器公共静态预准备语句getps(String SQL){ try { PS = conn . prepared statement(SQL);} catch(SQLException e){ e . printstacktrace();}返回PS;}//获取查询语句公共静态结果集getrs(){ try { RS = PS . execute query();} catch(SQLException e){ e . printstacktrace();}返回RS;}//获取结果集public static int update(){ int I = 0;请尝试{ I = PS . execute update();} catch(SQLException e){ e . printstacktrace();} return I;}//传递公共静态void setps(字符串...args){ try { for(int I = 0;即printstacktrace();} }//关闭公共静态void关闭所有(){if (rs!= null){ try { RS . close();} catch(SQLException e){ e . printstacktrace();} }如果(ps!= null){ try { PS . close();} catch(SQLException e){ e . printstacktrace();} } if(conn!= null){ try { conn . close();} catch(SQLException e){ e . printstacktrace();}}}}用工具重写之前修改密码,注册账号,注销账号的方法。
打包mysql公共类登录更新1 {公共静态void main (string [] args) {system。out.println("更改密码");字符串更新= update("root "," 123456 ");System.out.println(更新);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(演示);JDBC util . close all();}公共静态字符串更新(字符串用户名,字符串密码){ JDBC util . getconn();String sql = "更新userInfo设置密码=?其中用户名=?";JDBC util . getps(SQL);JDBCUtil.setPs(密码,用户名);int I = JDBC util . update();如果(我!=1){返回“修改失败”;}返回“修改成功”;}公共静态字符串插入(字符串用户名,字符串密码){ JDBC util . getconn();String sql = "insert into userInfo值(?,?)";JDBC util . getps(SQL);JDBCUtil.setPs(用户名,密码);int I = JDBC util . update();如果(我!=1){返回“注册失败”;}返回“注册成功”;}公共静态字符串删除(字符串用户名){ JDBC util . getconn();string SQL = " delete from userInfo where username =?";JDBC util . getps(SQL);JDBCUtil.setPs(用户名);int I = JDBC util . update();如果(我!=1){ return“注销失败”;}返回“注册成功”;}}
评论前必须登录!
注册