package cn.chunzhi.jdbc;
import cn.chunzhi.util.JDBCUtils;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Scanner;
/**
* 练习:
* 1.通过键盘录入用户名和密码
* 2.判断是否登陆成功
*/
public class Test09_JdbcLogin {
public static void main(String[] args) {
// 1.键盘输入,接收用户名和密码
Scanner sc = new Scanner(System.in);
System.out.println( "请输入用户昵称:" );
String username = sc.nextLine();
System.out.println( "请输入用户密码:" );
String password = sc.nextLine();
// 2.调用方法
boolean flag = new Test09_JdbcLogin().login(username, password);
// 3.判断结果
if (flag) {
System.out.println( "登录成功!" );
} else {
System.out.println( "用户名或密码错误!!" );
}
}
public boolean login(String username, String password) {
if (username == null || password == null ) {
return false ;
}
// 连接数据库判断是否成功
Connection conn = null ;
Statement stmt = null ;
ResultSet rs = null ;
// 1.获取连接
try {
conn = JDBCUtils.getConnection();
// 2.定义sql
String sql = "select * from user where username = ‘"+username+"‘ and password = ‘"+password+"‘ " ;
// 3.获取执行sql语句的对象
stmt = conn.createStatement();
// 4.执行sql
rs = stmt.executeQuery(sql);
// 5.判断
return rs.next(); // 如果有下一行返回true。判断当前行是否是最后一行的末尾。
} catch (SQLException e) {
e.printStackTrace();
} finally {
JDBCUtils.close(rs,stmt,conn);
}
return false ;
}
}
获取连接对象和释放资源封装类:
package cn.chunzhi.util;
import java.io.FileReader;
import java.io.IOException;
import java.net.URL;
import java.sql.* ;
import java.util.Properties;
/**
* JDBC工具类
*/
public class JDBCUtils {
private static String url;
private static String user;
private static String password;
private static String driver;
/**
* 文件的读取,只需要读取一次即可拿到这些值。使用静态代码块(静态代码块随着Class加载而加载,只执行一次)
*/
static {
// 读取资源文件获取值
try {
// 1.创建Properties集合类
// Properties集合是一个唯一和IO流相结合的集合。
Properties prop = new Properties();
// 获取src路径下的文件的方式 --> ClassLoader:类加载器
ClassLoader classLoader = JDBCUtils. class .getClassLoader();
URL resource = classLoader.getResource("jdbc.properties" );
String path = resource.getPath();
// System.out.println("获取的是绝对路径:"+ path); // 获取的是绝对路径
// 2.加载文件
prop.load( new FileReader(path));
// prop.load(new FileReader("C:\\Other\\IdeaProjects\\jdbc\\day04_jdbc\\src\\jdbc.properties"));
// 3.获取数据赋值
JDBCUtils.url = prop.getProperty("url" );
user = prop.getProperty("user" );
password = prop.getProperty("password" );
driver = prop.getProperty("driver" );
// 4.注册驱动
Class.forName(driver);
} catch (IOException | ClassNotFoundException e) {
e.printStackTrace();
}
}
/**
* 获取连接
* @return 连接对象
*/
public static Connection getConnection() throws SQLException {
return DriverManager.getConnection(url, user, password);
}
/**
* 释放资源
* @param stmt
* @param conn
*/
public static void close(Statement stmt, Connection conn) {
if (stmt != null ) {
try {
stmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (conn != null ) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
/**
* 释放资源
* @param rs
* @param stmt
* @param conn
*/
public static void close(ResultSet rs, Statement stmt, Connection conn) {
if (rs != null ) {
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (stmt != null ) {
try {
stmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (conn != null ) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
配置文件:
url = jdbc:mysql: // localhost:3305/db3 user = root password = root driver = com.mysql.jdbc.Driver
JDBC用户登录案例
标签:color 配置文件 tcl 集合 工具类 输入 can result test
声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://haodehen.cn/did118065