@Override
public List<User> getUsers() {
List<User> users = new ArrayList<User>();
try {
rs = getRs("SELECT * FROM users", null);
while (rs.next()) {
User u = new User(rs.getInt(1), rs.getString(2), rs.getString(3), rs.getString(4));
users.add(u);
}
} catch (Exception throwables) {
throwables.printStackTrace();
} finally {
closeAll();
}
return users;
}
@Override
public User getUserByUsername(String username) {
try {
rs = getRs("select * from users where username = ?",new Object[]{username});
while (rs.next()) {
User u = new User(rs.getInt(1), rs.getString(2), rs.getString(3), rs.getString(4));
return u;
}
} catch (Exception e) {
e.printStackTrace();
} finally {
closeAll();
}
return null;
}
@Override
public int modify(User u) {
return adu("update `users` set `username`=?,`userpass`=?,`role`=? where id=?", new Object[]{u.getUsername(), u.getPwd(), u.getRole(),u.getId()});
}
@Override
public int delete(int id) {
return adu("delete from users where id=?", new Object[]{id});
}
@Override
public int add(User u) {
return adu("insert into `users` (username,userpass,`role`)values(?,?,?)"
, new Object[]{u.getUsername(), u.getPwd(), u.getRole()});
}
PreparedStatement
预编译执行者对象
- 在执行sql语句之前,将sql语句进行提前编译。明确sql语句的格式后,就不会改变了。剩余的内容都会认定为是参数!
- SQL语句中的参数使用 ? (英文) 作为占位符
为 ? 占位符赋值的方法:setXxx(参数1,参数2);
- Xxx代表:数据类型
- 参数1:?的位置编号
- 参数2:?的实际参数
执行SQL语句
- 执行insert、update、delete语句:int executeUpdate();
- 执行select语句:ResultSet executeQuery();