题目:在数据库中建立用户表,用于存储注册的用户名和密码。
-- 提供登录和注册方法?
- 数据库结构
CREATE TABLE `user` (
`username` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
`password` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL
) ENGINE = InnoDB CHARACTER
- 案例 LoginService
package com.elk.login;
import com.elk.utils.JdbcUtils;
import com.elk.utils.StrUtils;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
public class LoginService {
/**
* 登录
*
* @param username
* @param password
*/
public void login(String username, String password) {
if (username == null || username.isEmpty()){
throw new RuntimeException( "请输入用户名!" );
}
if (password == null || password.isEmpty()){
throw new RuntimeException( "请输入密码!" );
}
// 查询用户信息
User user = this.selectByName(username);
// 核心逻辑
if (user == null){
throw new RuntimeException( "用户名错误!" );
}
if (!password.equals(user.getPassword())){
throw new RuntimeException( "密码错误!" );
}
}
/**
* 注册
* @param username
* @param password
* @param rePassword
*/
public void register(String username,String password,String rePassword ){
if (StrUtils.isEmpty(username)){
throw new RuntimeException( "用户名不能为空!" );
}
if (StrUtils.isEmpty(password)){
throw new RuntimeException( "请输入密码!" );
}
// 查询用户信息
User user = this.selectByName(username);
// 核心逻辑
if (user != null){
throw new RuntimeException( "用户名已存在!" );
}
if (!password.equals(user.getPassword())){
throw new RuntimeException( "两次输入的密码不一致!" );
}
this.insert(username,password);
}
/**
* 根据用户名查询用户信息
* @param username
* @return
*/
private User selectByName(String username) {
User user = null;
Connection connection = null;
Statement statement = null;
ResultSet resultSet = null;
try {
connection = JdbcUtils.getConnection( );
statement = connection.createStatement( );
String sql = "select * from user where username ='" + username + "'";
resultSet = statement.executeQuery(sql);
if (resultSet.next( )) {
user = new User( );
user.setUsername(resultSet.getString("username"));
user.setPassword(resultSet.getString("password"));
}
} catch (Exception e) {
e.printStackTrace( );
} finally {
JdbcUtils.close(connection,statement,resultSet);
}
return user;
}
public void insert(String username,String password){
Connection connection = null;
Statement statement = null;
try {
connection = JdbcUtils.getConnection( );
statement = connection.createStatement( );
String sql = "insert into user(username,password) values('"+ username +"','"+ password +"')";
statement.executeLargeUpdate(sql);
} catch (Exception e) {
e.printStackTrace( );
} finally {
JdbcUtils.close(connection,statement);
}
}
}
- App
package com.elk.login;
public class App {
public static void main(String[] args) {
LoginService service = new LoginService( );
// try {
// service.login("qqq","qqq");
// System.out.println("登录成功!");
// } catch (Exception e){
// e.printStackTrace();
// System.out.println(e.getMessage( ));
// }
try {
service.login("zzz","123");
System.out.println("注册成功!");
} catch (Exception e){
e.printStackTrace();
System.out.println(e.getMessage( ));
}
}
}
工具类 User
public class User {
private String username;
private String password;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}