优点1:可读性和维护性更好
Statement的插入语句:
String sql = "INSERT INTO teacher VALUES ('" + username + "','"+password+"','" + name +"')";;
PreparedStatement的插入语句:
String sql = "insert into teacher values(?,?,?)";
PreparedStatement ps = c.prepareStatement(sql); //c为connection类
ps.setString(1, username);
ps.setFloat(2, password);
ps.setInt(3, name);
ps.execute();
显然,Statement的插入语句中含有大量的单引号和双引号,例如(‘‘”“’‘'""“),看无论是开发还是维护都会造成极大的麻烦。
而PreparedStatement只需要在set方法填入插入的下标和值即可,极容易维护,增强阅读性。
优点二:性能表现
PreparedStatement有预编译机制,性能比Statement更快
优点三:防止SQL注入式攻击
如果是Statement作为登陆验证语句,那么用 ' or '1' = '1 作为账号和密码就能黑进网站。
而PreparedStatement则会组织这个漏洞。