JDBC使用者登入業務實現Plus版
阿新 • • 發佈:2021-07-08
JDBC使用者登入業務實現
一、初始化使用者介面
package com.happy.lesson1; import java.util.HashMap; import java.util.Map; import java.util.Scanner; public class JDBCTest06 { public static void main(String[] args) { //初始化使用者介面(說白了就是定義一個方法用來接收使用者輸入的賬號和密碼) Map<String,String> userLoginInfo = initUI(); //驗證使用者名稱和密碼 } private static Map<String,String> initUI() { Scanner sc = new Scanner(System.in); //接收使用者名稱 System.out.println("請輸入使用者名稱:"); String loginName = sc.nextLine(); //接收密碼 System.out.println("請輸入密碼:"); String loginPwd = sc.nextLine(); //定義一個集合存放使用者名稱和密碼 Map<String, String> userLoginInfo = new HashMap<String, String>(); userLoginInfo.put("loginName",loginName); userLoginInfo.put("loginPwd",loginPwd); return userLoginInfo; } }
執行結果:
二、登入方法的實現
說白了就是定義一個方法,驗證使用者名稱和密碼,並且返回Boolean值
這是整體程式碼:
package com.happy.lesson1; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.Statement; import java.util.HashMap; import java.util.Map; import java.util.ResourceBundle; import java.util.Scanner; public class JDBCTest06 { public static void main(String[] args) throws Exception { //初始化使用者介面(說白了就是定義一個方法用來接收使用者輸入的賬號和密碼) Map<String,String> userLoginInfo = initUI(); //驗證使用者名稱和密碼 //定義一個方法接收集合,並返回boolean值 boolean loginSuccess = login(userLoginInfo); System.out.println(loginSuccess?"登入成功":"登入失敗"); } private static boolean login(Map<String, String> userLoginInfo) throws Exception { //不是一開始想到的,而是處理結果集需要打標點,然後跳轉到這裡繼續寫程式碼 boolean loginSuccess = false; //JDBC程式設計6步 ResourceBundle jdbc = ResourceBundle.getBundle("JDBC"); String driver = jdbc.getString("driver"); String url = jdbc.getString("url"); String user = jdbc.getString("user"); String password = jdbc.getString("password"); //1.註冊驅動 Class.forName(driver); //2.獲取連線 Connection conn = DriverManager.getConnection(url, user, password); //3.獲取資料庫操作物件 Statement stmt = conn.createStatement(); //4.執行sql String loginName = userLoginInfo.get("loginName"); String loginPwd = userLoginInfo.get("loginPwd"); String sql = "select * from t_user where loginName = '"+loginName+"' and loginPwd = '"+loginPwd+"'"; ResultSet rs = stmt.executeQuery(sql); //5.處理結果集 if (rs.next()){ //登入成功 --> 想到打標點 回到 前面定義一個boolean標點 //將標點改變boolean值 loginSuccess = true; } //6.關閉資源 rs.close(); stmt.close(); conn.close(); //先關閉資源再返回值 return loginSuccess; } private static Map<String,String> initUI() { Scanner sc = new Scanner(System.in); //接收使用者名稱 System.out.println("請輸入使用者名稱:"); String loginName = sc.nextLine(); //接收密碼 System.out.println("請輸入密碼:"); String loginPwd = sc.nextLine(); //定義一個集合存放使用者名稱和密碼 Map<String, String> userLoginInfo = new HashMap<String, String>(); userLoginInfo.put("loginName",loginName); userLoginInfo.put("loginPwd",loginPwd); return userLoginInfo; } }
這是實現登入驗證的程式碼部分:
private static boolean login(Map<String, String> userLoginInfo) throws Exception { //不是一開始想到的,而是處理結果集需要打標點,然後跳轉到這裡繼續寫程式碼 boolean loginSuccess = false; //JDBC程式設計6步 ResourceBundle jdbc = ResourceBundle.getBundle("JDBC"); String driver = jdbc.getString("driver"); String url = jdbc.getString("url"); String user = jdbc.getString("user"); String password = jdbc.getString("password"); //1.註冊驅動 Class.forName(driver); //2.獲取連線 Connection conn = DriverManager.getConnection(url, user, password); //3.獲取資料庫操作物件 Statement stmt = conn.createStatement(); //4.執行sql String loginName = userLoginInfo.get("loginName"); String loginPwd = userLoginInfo.get("loginPwd"); String sql = "select * from t_user where loginName = '"+loginName+"' and loginPwd = '"+loginPwd+"'"; ResultSet rs = stmt.executeQuery(sql); //5.處理結果集 if (rs.next()){ //登入成功 --> 想到打標點 回到 前面定義一個boolean標點 //將標點改變boolean值 loginSuccess = true; } //6.關閉資源 rs.close(); stmt.close(); conn.close(); //先關閉資源再返回值 return loginSuccess; }
三、資料庫資料
四、執行
執行結果(正確輸入):
執行結果(錯誤輸入):
五、個人理解
1、使用者輸入賬號和密碼,資料儲存在一個集合中
舉例:使用者輸入賬號:test,密碼:123
那麼就會放入2個鍵值對,loginName(鍵)--test(值)、loginPwd(鍵)--123(值)
2、sql執行
String loginName = userLoginInfo.get("loginName");
String loginPwd = userLoginInfo.get("loginPwd");
String sql = "select * from t_user where loginName = '"+loginName+"' and loginPwd = '"+loginPwd+"'";
String loginName獲取的是真實的數值test,String loginPwd獲取的是真實的數值123,sql語句會根據這兩個條件去資料庫的表格查詢是否符合條件,如果符合就會有結果集
//sql語句執行並返回結果集
ResultSet rs = stmt.executeQuery(sql);
//5.處理結果集
if (rs.next()){
//登入成功 --> 想到打標點 回到 前面定義一個boolean標點
//將標點改變boolean值
loginSuccess = true;
}