数据库名:test。
使用给定sql文件恢复数据的表userinfo。
使用JDBC实现如下数据操作:
- 从控制台输入一个用户名和密码;
- 验证用户名是否存在,密码是否正确,分别返回相关信息;
- 如果用户名不存在,提示输入用户类型,插入相关用户信息,如果插入成功返回相关的提示信息。
- 时间:60小时
代码粘贴区:
import java.sql.*;
import java.util.Scanner;
public class UserAuthentication {
public static void main(String[] args) {
// 数据库连接信息
String url = "jdbc:mysql://localhost/mysql"; // 数据库连接URL
String user = "root"; // 数据库用户名
String password = "123456"; // 数据库密码
// 从控制台输入用户名和密码
Scanner scanner = new Scanner(System.in);
System.out.print("请输入用户名:");
String username = scanner.nextLine();
System.out.print("请输入密码:");
String passwordInput = scanner.nextLine();
// JDBC连接数据库
try (Connection conn = DriverManager.getConnection(url, user, password)) {
// 查询用户信息
String selectSql = "SELECT * FROM userinfo WHERE username=?";
PreparedStatement stmt = conn.prepareStatement(selectSql);
stmt.setString(1, username);
ResultSet rs = stmt.executeQuery();
if (rs.next()) {
// 用户名存在,验证密码
String storedPassword = rs.getString("userpasswd");
if (storedPassword.equals(passwordInput)) {
System.out.println("用户名:" + username + ",密码正确,登录成功!");
} else {
System.out.println("用户名:" + username + ",密码错误,请重新输入!");
}
} else {
// 用户名不存在,提示输入用户类型
System.out.println("用户名:" + username + " 不存在,请输入用户类型:");
System.out.print("用户类型(1为普通用户,2为管理员):");
int userType = scanner.nextInt();
System.out.print("输入uid:");
int uid = scanner.nextInt();
// 插入用户信息
String insertSql = "INSERT INTO userinfo (uid,username, userpasswd, usertype) VALUES (?,?, ?, ?)";
stmt = conn.prepareStatement(insertSql);
stmt.setInt(1, uid);
stmt.setString(2, username);
stmt.setString(3, passwordInput);
stmt.setInt(4, userType);
int rows = stmt.executeUpdate();
if (rows > 0) {
System.out.println("用户名:" + username + ",用户类型:" + userType + ",注册成功!");
} else {
System.out.println("用户名:" + username + ",用户类型:" + userType + ",注册失败!");
}
}
rs.close();
stmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
运行结果截图: