3. 完善数据库访问类(UserDao)getUserByName(String username)和addUser(User user)方法操作数据库;
时间: 2024-01-17 12:05:35 浏览: 68
要完善数据库访问类(UserDao)中的 getUserByName(String username) 和 addUser(User user) 方法,需要使用 JDBC 连接数据库,并且编写 SQL 语句来操作数据库。
下面是一个示例的 UserDao 类,你可以根据自己的具体情况进行修改:
```java
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class UserDao {
// 根据用户名查询用户
public User getUserByName(String username) {
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
User user = null;
try {
// 获取数据库连接
conn = JDBCUtils.getConnection();
// 编写 SQL 语句
String sql = "select * from user where username=?";
// 创建 PreparedStatement 对象
pstmt = conn.prepareStatement(sql);
// 设置占位符参数
pstmt.setString(1, username);
// 执行查询操作
rs = pstmt.executeQuery();
// 处理查询结果
if (rs.next()) {
user = new User();
user.setId(rs.getInt("id"));
user.setUsername(rs.getString("username"));
user.setPassword(rs.getString("password"));
user.setEmail(rs.getString("email"));
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
// 关闭资源
JDBCUtils.close(rs, pstmt, conn);
}
return user;
}
// 添加用户
public boolean addUser(User user) {
Connection conn = null;
PreparedStatement pstmt = null;
boolean flag = false;
try {
// 获取数据库连接
conn = JDBCUtils.getConnection();
// 编写 SQL 语句
String sql = "insert into user (username, password, email) values (?, ?, ?)";
// 创建 PreparedStatement 对象
pstmt = conn.prepareStatement(sql);
// 设置占位符参数
pstmt.setString(1, user.getUsername());
pstmt.setString(2, user.getPassword());
pstmt.setString(3, user.getEmail());
// 执行插入操作
int count = pstmt.executeUpdate();
// 判断插入是否成功
if (count > 0) {
flag = true;
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
// 关闭资源
JDBCUtils.close(pstmt, conn);
}
return flag;
}
}
```
在上面的代码中,getUserByName(String username) 方法用于根据用户名查询用户,addUser(User user) 方法用于添加用户。这两个方法都是使用 JDBC 连接数据库,并且编写 SQL 语句来操作数据库。
需要注意的是,具体的 SQL 语句会因为你所使用的数据库和表结构而有所不同,你需要根据自己的情况进行修改。另外,你也可以使用 ORM 框架来代替手写的 JDBC 代码,以便更方便地操作数据库。
阅读全文