使用jdbc实现用户注册和登录
时间: 2023-06-13 10:05:45 浏览: 57
首先需要建立一个数据库,包括用户表(user)和用户登录表(user_login),其中用户表包含用户基本信息,用户登录表包含用户登录名和密码。
建立用户表user:
```
CREATE TABLE user (
id INT(11) PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(50) NOT NULL,
email VARCHAR(50) NOT NULL,
phone VARCHAR(20) NOT NULL,
age INT(3) NOT NULL
);
```
建立用户登录表user_login:
```
CREATE TABLE user_login (
id INT(11) PRIMARY KEY AUTO_INCREMENT,
user_id INT(11) NOT NULL,
username VARCHAR(50) NOT NULL,
password VARCHAR(50) NOT NULL,
FOREIGN KEY (user_id) REFERENCES user(id)
);
```
接下来,我们使用jdbc实现用户注册和登录。
用户注册:
```
public void register(User user, String username, String password) {
Connection conn = null;
PreparedStatement ps = null;
ResultSet rs = null;
try {
conn = getConnection();
conn.setAutoCommit(false);
// 先插入用户基本信息
String sql = "INSERT INTO user (name, email, phone, age) VALUES (?, ?, ?, ?)";
ps = conn.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS);
ps.setString(1, user.getName());
ps.setString(2, user.getEmail());
ps.setString(3, user.getPhone());
ps.setInt(4, user.getAge());
ps.executeUpdate();
rs = ps.getGeneratedKeys();
if (rs.next()) {
int userId = rs.getInt(1);
// 再插入用户登录信息
sql = "INSERT INTO user_login (user_id, username, password) VALUES (?, ?, ?)";
ps = conn.prepareStatement(sql);
ps.setInt(1, userId);
ps.setString(2, username);
ps.setString(3, password);
ps.executeUpdate();
conn.commit();
} else {
conn.rollback();
}
} catch (SQLException e) {
e.printStackTrace();
try {
conn.rollback();
} catch (SQLException e1) {
e1.printStackTrace();
}
} finally {
close(conn, ps, rs);
}
}
```
用户登录:
```
public boolean login(String username, String password) {
Connection conn = null;
PreparedStatement ps = null;
ResultSet rs = null;
try {
conn = getConnection();
String sql = "SELECT * FROM user_login WHERE username = ? AND password = ?";
ps = conn.prepareStatement(sql);
ps.setString(1, username);
ps.setString(2, password);
rs = ps.executeQuery();
if (rs.next()) {
return true;
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
close(conn, ps, rs);
}
return false;
}
```
其中getConnection()、close()方法是连接数据库和关闭连接的方法。你需要根据自己的实际情况进行实现。