JDBC_09_Statement 和 PreparedStatement

Statement 和 PreparedStatement

  * Statement数据库操作对象存在SQL注入问题,而PreparedStatement预编译数据库操作对象解决了SQL注入问题。

  * 一条SQL语句如果任何位置都没有改动,那么第二次执行的时候就不会再进行一次编译了,就会直接执行了,而Statement是先进行SQL语句传参,再进行编译的,所以SQL语句每次都有改动,都和上次不同,所以每次都需要编译,效 
    率较低。 (编译一次,执行一次);  而 PreparedStatement是先对sql语句框架进行预编译的,编译后再给占位符传参,所以每次的sql语句都是一样的,不需要再次进行编译,效率较高。 (编译一次,可执行N次)。

  *  Statement不会对传入的数据进行类型检查,即使和数据库中字段的数据类型不一致,也不会再编译器报错; 而 PreparedStatement的方法 setString,setInt setDouble等,许哟啊所传入的值的数据蕾西和所要求的保持一致,  
     如果不一致就会报错,也就是对传入的数据进行了类型检查。

  * 综上所述 再给SQL语句传值的时候 PreparedStatement 使用较多, Statement使用较少。

  * 但是有些业务需要支持SQL注入,需要进行SQL语句的拼接,那么就必须使用Statement。
posted @ 2021-04-17 10:40  失昼  阅读(59)  评论(0)    收藏  举报