DAO(Data Access Object)
所谓的DAO就是把连接数据库的前期工作都做好,提供几个方法来给用户调用而已。
为了未来能够方便修改,尽量定义接口,然后实现接口。
- 新建一个dao的接口,里面声明数据库访问规则
- 新建一个dao的实现类,具体实现早前定义的规则
- 直接使用实现
Statement的安全问题主要是:账号密码的登录需要拼接成一条sql语句去操作数据库,但这可能有会使得别人利用账号密码的填写来拼接出非法的sql去操作数据库
解决办法
PrepareStatement ps = conn.prepareStatement(String sql)
案例代码(记得要重载那些释放的方法)
public void login(String username, String password) {
Connection conn = null;
Statement st = null;
ResultSet rs = null;
try {
//1. 获取连接对象
conn = JDBCUtil.getConn();
//2. 创建statement对象
String sql = "select * from t_user where username=? and password=?";
//预先对sql语句执行语法的校验, ? 对应的内容,后面不管传递什么进来,都把它看成是字符串。 or select
PreparedStatement ps = conn.prepareStatement(sql);
//? 对应的索引从 1 开始。
ps.setString(1, username);
ps.setString(2, password);
rs = ps.executeQuery();
if(rs.next()){
System.out.println("登录成功");
}else{
System.out.println("登录失败");
}
} catch (Exception e) {
e.printStackTrace();
}finally {
JDBCUtil.release(conn, st, rs);
}
}