Statement和Preparestatement的区别和联系

statement和preparestatement

简介

        ~~~~~~~ Statement 是 Java 执行数据库操作的一个重要接口,用于在已经建立数据库连接的基础上,向数据库发送要执行的SQL语句。Statement对象,用于执行不带参数的简单SQL语句。
(用于执行静态 SQL 语句并返回它所生成结果的对象)

子接口有CallableStatement, PreparedStatement

CallableStatement 对象用于执行对数据库已存在的存储过程的调用;

PreparedStatement接口继承Statement,其对象用于执行带或不带 IN 参数的预编译 SQL 语句;

	·IN参数的值在SQL语句创建时未被指定;
	·每个IN参数保留一个问号(“?”)作为占位符;
	·每个问号的值必须在该语句执行之前,通过适当的setXXX 方法来提供。

区别

1.效率
        ~~~~~~~ PreparedStatement对象预编译sql语句方便被重复调用。语句在被DB的编译器编译后的执行代码被缓存下来,那么下次调用时只要是相同的预编译语句就不需要编译,只要将参数直接传入编译过的语句执行代码中就会得到执行。
        ~~~~~~~ 而Statement每操作一次就需要重新编译sql语句并执行。

2.可读性和可维护性
        ~~~~~~~ PreparedStatement将参数与SQL语句分离出来,这样就可以方便对程序的更改和延续,同时可以减少不必要的错误,也看起来没有特别繁琐,增加了可读性。
        ~~~~~~~ 而Statement每操作一次就需要重写sql语句,增加了成本以及出错的可能,读起来也会比较费劲。

3.安全性
        ~~~~~~~ PreparedStatement使用预编译语句,可以防止sql注入.而如果使用Statement,要对drop等做费尽心机的判断和过滤。

发布了27 篇原创文章 · 获赞 4 · 访问量 1035

猜你喜欢

转载自blog.csdn.net/Lb_CsdnJava/article/details/104263114