摘要:比如將建立連接的代碼放入工具類里面,工具類提供給外界一個獲取的方法,需要的時候直接調用方法即可。
在之前的這篇博客里面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 "注冊成功"; }}
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/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...
閱讀 1225·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