为什么JDBC 中用 PrepareStatement 而不用 Statement

一、PrepareStatement是预编译的,比Statement速度快

每一种数据库都会尽最大努力对预编译语句提供最大的性能优化;因为预编译语句有可能被重复调用.所以语句在被DB的编译器编译后的执行代码被缓存下来,那么下次调用时只要是相同的预编译语句就不需要编译,只要将参数直接传入编译过的语句执行代码中(相当于一个函数)就会得到执行;这并不是说只有一个Connection中多次执行的预编译语句被缓存,而是对于整个DB中,只要预编译的语句语法和缓存中匹配,那么在任何时候就可以不需要再次编译而可以直接执行;而statement的语句中,即使是相同一操作,而由于每次操作的数据不同所以使整个语句相匹配的机会极小,几乎不太可能匹配。

二、PrepareStatement对比Statement更具有安全性

Statement采用的方法是先组装SQL语句,然后进行sql命令的执行,容易出现错误

例如:

如果我们把[' or '1' = '1]作为kspwd传入进来 照样能成功

但是用PrepareStatement就完全不一样

事实证明:PrepareStatement方法更加安全快捷

发布了21 篇原创文章 · 获赞 7 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/qq_40662239/article/details/90798840