–之前在面试的时候遇到一道面试题:preparedStatement和Statement的区别,特此记录
- 相同点:都是用来创建一个对象然后使用这个对象去调用executeQuery()方法以便执行sql语句。
- 不同点:1、格式不一样。preparedStatement提高代码可读性
Statement创建对象并执行sql语句
`String sql = “select * from users where username= '”+username+"’ and userpwd=’"+userpwd+"’";
stmt = conn.createStatement();
rs = stmt.executeQuery(sql);
preparedStatement创建并执行sql语句
String sql = “select * from users where username=? and userpwd=?”;
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, username);
pstmt.setString(2, userpwd);
rs = pstmt.executeQuery();
2、preparedStatement提高代码的灵活性和执行效率。
PrepareStatement接口是Statement接口的子接口,他继承了Statement接口的所有功能。它主要是拿来解决我们使用Statement对象多次执行同一个SQL语句的效率问题的。ParperStatement接口的机制是在数据库支持预编译的情况下预先将SQL语句编译,当多次执行这条SQL语句时,可以直接执行编译好的SQL语句,这样就大大提高了程序的灵活性和执行效率。
3、preparedStatement比Statement安全
Statement会造成sql注入