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