1. 程式人生 > 其它 >JDBC使用者登入業務實現Plus版

JDBC使用者登入業務實現Plus版

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;
}

3、要學會打標點的思想