利用JDBC技術,模擬用戶登錄的過程。查詢用戶表,用戶名和密碼是否匹配,是否存在。


LoginUser.java

package com.yikuan.Login;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Scanner;
import cn.tedu.util.JDBCUtils;

/**
 * 這個類用來模擬用戶登錄
 * @author Administrator
 *
 */
public class LoginUser {
    //1.main方法,提示用戶輸入
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("請輸入用戶名:");
        String name = sc.nextLine();
        System.out.println("請輸入密碼:");
        String pwd = sc.nextLine();
        
        //去user表根據用戶輸入的用戶名和密碼查詢數據,利用jdbc技術
        login(name,pwd);
    }

    private static void login(String name, String pwd) {
        Connection conn = null;
        PreparedStatement ps = null;    //對象PreparedStatement有預編譯的過程
        ResultSet rs = null;
        try {
            //1.注冊驅動
            //2.獲取數據庫連接
            conn = JDBCUtils.getConnection();
            //3.獲取傳輸器
        //    String sql = "select * from user where username='"+name+"' and password='"+pwd+"' ";
            String sql = "select * from user where username=? and password=?";
            //sql中包含?的叫做sql骨架,?叫做占位符;
            ps = conn.prepareStatement(sql);
            //給sql語句設置參數
            ps.setString(1, name);
            ps.setString(2, pwd);
            //4.執行sql
            rs = ps.executeQuery();
            
            //5.遍歷結果集
                /*
                 * 如果rs有值,就可以登錄成功,反則登錄失敗
                 */
            if(rs.next()){
                System.out.println("恭喜你!登錄成功!");
            }else{
                System.out.println("您輸入的用戶名或密碼錯誤!");
            }
            //6.釋放資源`
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            JDBCUtils.close(rs, ps, conn);
        }
    }
}

JDBCUtils.java

package cn.yikuan.util;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ResourceBundle;
/**
 * 這個類用來提供JDBC的工具類
 * @author Administrator
 *
 */
public class JDBCUtils {
    //1.私有化構造函數,外界無法直接創建對象
    private JDBCUtils(){

    }
    
    static ResourceBundle rb = null;
    static {
        //讀取屬性文件
        rb = ResourceBundle.getBundle("jdbc");
    }

    //2.提供公共的,靜態的,getConnection方法,用來給外界提供數據庫連接
    public static Connection getConnection(){
        try {
            //2.1注冊驅動
            Class.forName(rb.getString("driverClass"));
            //2.2獲取數據庫連接
            String url = rb.getString("jdbcUrl");
            String user = rb.getString("user");
            String password = rb.getString("password");
            Connection conn = DriverManager.getConnection(url, user, password);
            return conn;
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;    
    }

    //3.提供公共的,靜態的,close方法,用來釋放資源
    public static void close(ResultSet rs,Statement st,Connection conn){
        //3.1非空判斷,防止空指針異常
        //3.2手動置為空,保證完全釋放
        if(rs != null){
            try {
                rs.close();
            } catch (SQLException e) {
                e.printStackTrace();
            } finally {
                rs = null;
            }
        }
        if(st != null){
            try {
                st.close();
            } catch (SQLException e) {
                e.printStackTrace();
            } finally {
                st = null;
            }
        }
        if(conn != null){
            try {
                conn.close();
            } catch (SQLException e) {
                e.printStackTrace();
            } finally {
                conn = null;
            }
        }

    }
}

jdbc.properties(該配置文件不可以有空格)

driverClass=com.mysql.jdbc.Driver
jdbcUrl=jdbc:mysql:///jtdb
user=root
password=123456

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM