预编译JDBC PreparedStatement有什么作用?

xde*_*000 9 java jdbc prepared-statement

"预编译"语句的作用是什么,因为我已经看到如果我编写一个带有错误SQL语法的预准备语句,编译不会报告任何问题!

因此,如果预编译准备好的语句不检查语法有效性,它究竟做了什么?

Joa*_*uer 14

创建一个PreparedStatements可能或可能不涉及SQL语法验证甚至是DB服务器往返,这完全取决于所使用的JDBC驱动程序.有些司机会进行往返或验证,有些则不会.

因此,对于某些JDBC驱动程序,a PreparedStatement不再是正常的"准备" Statement.(换句话说:一些JDBC驱动程序PreparedStatement代表服务器端资源(类似于Connection),而另一些则是纯客户端构造).

但是,一个重要的区别是,a PreparedStatement将帮助您以一种方式处理动态参数值,这种方式可以避免在尝试将值手动插入SQL语句字符串并使用a执行时避免任何转义或格式化问题.正常Statement.

这特点是indepdendent从"准备"语句的选择事前或没有,所以它是由每一个JDBC驱动程序提供的,即使它没有做任何其他的准备步骤.