Statement和PrepareStatement的区别
接口 | Statement | PrepareStatement |
---|---|---|
对象获取方式 | Connection.createStatement() | Connection.PrepareStatement() |
sql动态参数对象 | 字符串拼接 | 占位符+setObject()方法 |
防止sql注入 | 特殊字符提前转义 | 自带 |
sql编译时机 | 数据库每次都要重新编译 | 用一个sql只编译一次,改变参数执行不同结果 |
适用场景 | 适用于运行静态sql语句 | 计划多次使用sql语句 |
其他 | 不适合封装成通用框架 | 就是JDBC框架的基础 |
PrepareStatement接口:
表示预编译的SQL语句的对象。代码可读性和维护性高。
SQL语句被编译并存储在PrepareStatement对象中,然后可以使用此对象多次高校地执行该语句,支持参数化的SQL语句。