jdbc工具类
package utils;
import java.io.FileInputStream;
import java.sql.*;
import java.util.Properties;
public class JdbcUtil {
private static Connection conn;
Properties p = new Properties();
static {
//创建Properties
Properties p = new Properties();
try {
//读取配置文件
p.load(new FileInputStream("config.properties"));
//获取配置信息
String className = p.getProperty("className");
String user = p.getProperty("user");
String password = p.getProperty("password");
String url = p.getProperty("url");
//加载驱动
Class.forName(className);
//获取连接
conn = DriverManager.getConnection(url, user, password);
} catch (Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
}
//构造方法私有化
private JdbcUtil() {}
/**
* 方法的作用: 获取连接对象
* 参数列表: 空
* 返回值类型: Connection
* @return
*/
public static Connection getConnection() {
return conn;
}
/**
* 方法的作用: 释放资源
* 参数列表: conn stat rs
* 返回值类型: void
* @param conn
* @param stat
* @param rs
*/
public static void close(Connection conn, Statement stat, ResultSet rs) {
//先开后关的原则
try {
if(rs != null) {
rs.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
try {
if (stat != null) {
stat.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
try {
if (conn != null){
conn.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
config.properties
className=com.mysql.cj.jdbc.Driver
user=root
password=123456
url=jdbc:mysql://localhost:3306/test?serverTimezone=UTC
Demo
package demo;
import utils.JdbcUtil;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Scanner;
public class Demo {
public static void main(String[] args) throws SQLException {
System.out.println("欢迎来到登录系统:");
Scanner sc = new Scanner(System.in);
System.out.println("输入账号:");
String username = sc.nextLine();
// 获取连接对象
Connection conn = JdbcUtil.getConnection();
// 检查账号是否已存在
if (isAccountExists(conn, username)) {
System.out.println("输入密码:");
String password = sc.nextLine();
// 验证密码
if (verifyPassword(conn, username, password)) {
System.out.println("登录成功");
} else {
System.out.println("密码错误,登录失败");
}
} else {
System.out.println("账号不存在,请进行注册");
System.out.println("请输入账号:");
String usernameNew = sc.nextLine();
System.out.println("请输入密码:");
String password = sc.nextLine();
System.out.println("请输入爱好:");
String hobby = sc.nextLine();
// 执行注册操作
if (registerAccount(conn, usernameNew, password, hobby)) {
System.out.println("注册成功");
} else {
System.out.println("注册失败");
}
}
// 释放资源
JdbcUtil.close(conn, null, null);
}
// 检查账号是否已经存在
public static boolean isAccountExists(Connection conn, String username) throws SQLException {
String sql = "SELECT COUNT(*) FROM user WHERE username = ?";
PreparedStatement ps = conn.prepareStatement(sql);
ps.setString(1, username);
ResultSet rs = ps.executeQuery();
if (rs.next()) {
int count = rs.getInt(1);
return count > 0;
}
return false;
}
// 验证密码
public static boolean verifyPassword(Connection conn, String username, String password) throws SQLException {
String sql = "SELECT COUNT(*) FROM user WHERE username = ? AND password = ?";
PreparedStatement ps = conn.prepareStatement(sql);
ps.setString(1, username);
ps.setString(2, password);
ResultSet rs = ps.executeQuery();
if (rs.next()) {
int count = rs.getInt(1);
return count > 0;
}
return false;
}
// 注册账号
public static boolean registerAccount(Connection conn, String username, String password, String hobby) throws SQLException {
String sql = "INSERT INTO user (username, password, hobby) VALUES (?, ?, ?)";
PreparedStatement ps = conn.prepareStatement(sql);
ps.setString(1, username);
ps.setString(2, password);
ps.setString(3, hobby);
int result = ps.executeUpdate();
return result > 0;
}
}