摘要:比如將建立連接的代碼放入工具類里面,工具類提供給外界一個(gè)獲取的方法,需要的時(shí)候直接調(diào)用方法即可。
在之前的這篇博客里面MySQL筆記 —— jdbc連接數(shù)據(jù)庫(kù)(增刪改查,sql注入,網(wǎng)站登錄檢查)
寫了網(wǎng)站登錄檢查的代碼,通過將用戶輸入的用戶名和密碼與數(shù)據(jù)庫(kù)中存儲(chǔ)的用戶名和密碼進(jìn)行比較,如果一致則登錄成功,不一致則登陸失敗
現(xiàn)在再給出網(wǎng)站登錄列表中的,修改密碼,注冊(cè)賬號(hào),注銷賬號(hào)功能
先給出userInfo用戶信息表的數(shù)據(jù)
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("注冊(cè)賬號(hào)"); String insert = insert("demo","222222"); System.out.println(insert); System.out.println("注銷賬號(hào)"); 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 "修改成功"; } //注冊(cè)賬號(hào) 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 "注冊(cè)失敗"; } return "注冊(cè)成功"; } //注銷賬號(hào) 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 "注銷成功"; }}
查詢一下數(shù)據(jù)庫(kù)里面的表,select * from userInfo;
密碼確實(shí)被修改了,test用戶被注銷,新增了一個(gè)demo用戶
現(xiàn)在來思考一個(gè)問題,上面代碼里面有三個(gè)功能,修改密碼,注冊(cè)賬號(hào),注銷賬號(hào)。三個(gè)功能分別對(duì)應(yīng)三個(gè)方法,但是方法內(nèi)的語(yǔ)句有大量重復(fù)的地方,比如獲取驅(qū)動(dòng)和獲取連接的代碼,獲取執(zhí)行器,以及最后關(guān)閉的代碼其實(shí)都是重復(fù)的。這不符合我們寫代碼的精簡(jiǎn)思想,所以能不能把這些重復(fù)的代碼都提取出來,放進(jìn)一個(gè)工具類里面。比如將建立連接的代碼放入工具類里面,工具類提供給外界一個(gè)獲取的方法,需要的時(shí)候直接調(diào)用方法即可。
這個(gè)工具類就是jdbc工具類,現(xiàn)在給出工具類的全部代碼
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{ //獲取配置文件里面的參數(shù)信息 Properties properties = new Properties(); //利用反射加載配置文件 InputStream is = JDBCUtil.class.getClassLoader().getResourceAsStream("mysql.properties"); //利用Properties對(duì)象加載輸入流is properties.load(is); DRIVER=properties.getProperty("driver"); URL=properties.getProperty("url"); USERNAME=properties.getProperty("username"); PASSWORD=properties.getProperty("password"); //獲取驅(qū)動(dòng) Class.forName(DRIVER); //獲取連接 conn=DriverManager.getConnection(URL,USERNAME,PASSWORD); }catch(Exception e){ e.printStackTrace(); } } //獲取連接 public static Connection getConn(){ return conn; } //獲取執(zhí)行器 public static PreparedStatement getPs(String sql){ try { ps = conn.prepareStatement(sql); } catch (SQLException e) { e.printStackTrace(); } return ps; } //獲取查詢語(yǔ)句的結(jié)果集 public static ResultSet getRs(){ try { rs=ps.executeQuery(); } catch (SQLException e) { e.printStackTrace(); } return rs; } //獲取增刪改語(yǔ)句的結(jié)果集 public static int update(){ int i=0; try { i=ps.executeUpdate(); } catch (SQLException e) { e.printStackTrace(); } return i; } //給執(zhí)行器傳參 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(); } } //關(guān)閉 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(); } } }}
利用工具類,再來重新寫一下之前的修改密碼,注冊(cè)賬號(hào),注銷賬號(hào)的方法
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("注冊(cè)賬號(hào)"); String show = insert("show", "333333"); System.out.println(show); System.out.println("------------------"); System.out.println("注銷賬號(hào)"); 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 "注冊(cè)失敗"; } return "注冊(cè)成功"; } 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 "注冊(cè)成功"; }}
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/123004.html
摘要:如上海北京等管理員自己創(chuàng)建其他地方的學(xué)校管理員創(chuàng)建的課程。包含名字性別年齡等學(xué)員查詢可上課程學(xué)員選課,選擇學(xué)校課程,并付款。課程價(jià)格,周期課程價(jià)格,周期課程價(jià)格,周期創(chuàng)建講師屬于北京校區(qū),屬于上海校區(qū)。 作業(yè)需求 創(chuàng)建北京、上海 2 所學(xué)校 創(chuàng)建linux , python , go 3個(gè)課程,linuxpy在北京開, go 在上海開 課程包含,周期,價(jià)格,通過學(xué)校創(chuàng)建課程 通過學(xué)校...
摘要:是訪問數(shù)據(jù)庫(kù)的標(biāo)準(zhǔn)規(guī)范。提供了一種基準(zhǔn)據(jù)此可以構(gòu)建更高級(jí)的工具和接口,使數(shù)據(jù)庫(kù)開發(fā)人員能夠編寫數(shù)據(jù)庫(kù)應(yīng)用程序。代碼如下工具類數(shù)據(jù)庫(kù)驅(qū)動(dòng)注冊(cè)失敗提供獲取連接的方法獲得連接返回連接 本文為大家介紹 Java 如何使用JDBC 連接 MySQL 數(shù)據(jù)庫(kù)。 JDBC概述 JDBC(Java Data Base Connectivity,java數(shù)據(jù)庫(kù)連接)是一種用于執(zhí)行SQL語(yǔ)句的Java A...
摘要:是訪問數(shù)據(jù)庫(kù)的標(biāo)準(zhǔn)規(guī)范。提供了一種基準(zhǔn)據(jù)此可以構(gòu)建更高級(jí)的工具和接口,使數(shù)據(jù)庫(kù)開發(fā)人員能夠編寫數(shù)據(jù)庫(kù)應(yīng)用程序。代碼如下工具類數(shù)據(jù)庫(kù)驅(qū)動(dòng)注冊(cè)失敗提供獲取連接的方法獲得連接返回連接 本文為大家介紹 Java 如何使用JDBC 連接 MySQL 數(shù)據(jù)庫(kù)。 JDBC概述 JDBC(Java Data Base Connectivity,java數(shù)據(jù)庫(kù)連接)是一種用于執(zhí)行SQL語(yǔ)句的Java A...
閱讀 1239·2021-11-11 16:54
閱讀 888·2021-10-19 11:44
閱讀 1354·2021-09-22 15:18
閱讀 2457·2019-08-29 16:26
閱讀 2961·2019-08-29 13:57
閱讀 3107·2019-08-26 13:32
閱讀 1091·2019-08-26 11:58
閱讀 2343·2019-08-26 10:37