1.创建一张表
CREATE TABLE shs_users (
`id` int DEFAULT NULL,
`name` varchar(255) DEFAULT NULL,
`pwd` varchar(255) DEFAULT NULL,
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3;
INSERT INTO shs_users (`id`, `name`, `pwd`) VALUES ('1', 'mm', '123');
INSERT INTO shs_users (`id`, `name`, `pwd`) VALUES ('2', 'yy', '666');
package JDBC.entity;
public class UserEntity {
private Long id;
private String name;
private String pwd;
public UserEntity(String name, String pwd) {
this.name = name;
this.pwd = pwd;
}
public UserEntity(Long id,String name, String pwd) {
this.id=id;
this.name = name;
this.pwd = pwd;
}
public Long getId() {
return id;
}
public String getName() {
return name;
}
public String getPwd() {
return pwd;
}
public void setId(Long id) {
this.id = id;
}
public void setName(String name) {
this.name = name;
}
public void setPwd(String pwd) {
this.pwd = pwd;
}
}
package JDBC.dao;
import JDBC.entity.UserEntity;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
public class UserDao {
public int registerUser(UserEntity userEntity) {
Connection connection = null;
Statement statement = null;
try {
//A.java连接mysql数据库查询所有数据
//1.导入mysql驱动jar包;
//2. 注册驱动 javase 反射机制Class.forName()
Class.forName("com.mysql.cj.jdbc.Driver");
//3. 获取数据库连接
connection = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/shs_demo?serverTimezone=UTC", "root", "root");
//4. 获取执行者对象
statement = connection.createStatement();
String insertUserSql = "INSERT INTO `shs_users` (`id`, `name`, `pwd`) VALUES (null, '" + userEntity.getName() + "', '" + userEntity.getPwd() + "');";
System.out.println("insertUserSql:" + insertUserSql);
int result = statement.executeUpdate(insertUserSql);
return result;
} catch (Exception e) {
e.printStackTrace();
return 0;
}finally{// 7. 释放jdbc资源
try {
if (statement != null)
statement.close();
if (connection != null)
connection.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
//根据姓名查询
public UserEntity getByNameUser(String name){
if (name==null ||name.length()==0){
return null;
}
Connection connection=null;
Statement statement=null;
ResultSet resultSet=null;
try {
Class.forName("com.mysql.cj.jdbc.Driver");
connection=DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/shs_demo?serverTimezone=UTC", "root", "root");
//4. 获取执行者对象
statement=connection.createStatement();
String getByNameUserSql="SELECT * FROM shs_users WHERE `name`='" + name+"' ";
System.out.println(getByNameUserSql);
resultSet =statement.executeQuery(getByNameUserSql);
boolean result=resultSet.next();
if (!result){
return null;
}
Long dbId=resultSet.getLong("id");
String dbname=resultSet.getString("name");
String dbpwd=resultSet.getString("pwd");
return new UserEntity(dbId,dbname,dbpwd);
}catch (Exception e){
e.printStackTrace();
return null;
}finally {
try {
if (statement!=null)
statement.close();
if (connection!=null)
connection.close();
if (resultSet!=null)
resultSet.close();
}catch (Exception e){
e.printStackTrace();
}
}
}
public UserEntity login(UserEntity userEntity) {
Connection connection = null;
Statement statement = null;
ResultSet resultSet = null;
try {
Class.forName("com.mysql.cj.jdbc.Driver");
connection = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/shs_demo?serverTimezone=UTC", "root", "root");
//4. 获取执行者对象
statement = connection.createStatement();
String loginSql = "SELECT * FROM shs_users WHERE `name`='" + userEntity.getName() + "' and pwd='" + userEntity.getPwd() + "';";
System.out.println(loginSql);
resultSet = statement.executeQuery(loginSql);
boolean result = resultSet.next();
if (!result) {
return null;
}
Long dbID = resultSet.getLong("id");
String dbName = resultSet.getString("name");
String dbPwd = resultSet.getString("pwd");
return new UserEntity(dbID,dbName, dbPwd);
} catch (Exception e) {
e.printStackTrace();
return null;
} finally {
try {
if (connection != null) {
connection.close();
}
if (resultSet != null) {
resultSet.close();
}
if (statement != null) {
statement.close();
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
package JDBC.service;
import JDBC.dao.UserDao;
import JDBC.entity.UserEntity;
public class UserService {
private UserDao userDao=new UserDao();
public int registerUser(UserEntity userEntity){
String name=userEntity.getName();
UserEntity userEntity1=userDao.getByNameUser(name);
if (userEntity1!=null){
System.out.println("用户名已经存在");
return 0;
}
return userDao.registerUser(userEntity);
}
public UserEntity getByNameUser(String name){
return userDao.getByNameUser(name);
}
public UserEntity login(UserEntity userEntity){
return userDao.login(userEntity);
}
}
package JDBC.test;
import JDBC.dao.UserDao;
import JDBC.entity.UserEntity;
import JDBC.service.UserService;
import java.util.Scanner;
public class UserTest {
private UserService userService=new UserService();
public static void main(String[] args) {
UserTest userTest = new UserTest();
userTest.index();
}
public void index(){
Scanner scanner = new Scanner(System.in);
System.out.println("请输入数字1:用户注册");
System.out.println("请输入数字2:用户登录");
int number=scanner.nextInt();
switch (number){
case 1:
registerUser();
break;
case 2:
login();
break;
}
}
public void registerUser(){
Scanner scanner = new Scanner(System.in);
System.out.println("请输入姓名:");
String name=scanner.nextLine();
System.out.println("请输入密码:");
String pwd=scanner.nextLine();
int result= userService.registerUser(new UserEntity(name,pwd));
if (result>0){
System.out.println("用户注册成功");
}else {
System.out.println("用户注册失败");
}
}
public void login(){
for (int i=1;i<=3;i++){
Scanner scanner = new Scanner(System.in);
System.out.println("请输入姓名:");
String name=scanner.nextLine();
System.out.println("请输入密码:");
String pwd=scanner.nextLine();
UserEntity userEntity=userService.login(new UserEntity(name,pwd));
if (userEntity!=null){
System.out.println("登录成功");
return;
}else {
System.out.println("姓名不正确或者密码不正确,错误次数:"+i);
}
}
}
}
该文展示了使用JavaJDBC进行数据库操作,包括创建用户表`shs_users`,实现用户注册和登录功能。`UserEntity`类定义了用户属性,`UserDao`处理数据库交互,`UserService`提供业务逻辑,而`UserTest`进行测试。用户注册会检查用户名是否已存在,登录则验证用户名和密码的匹配性。
764

被折叠的 条评论
为什么被折叠?



