简单的说,所有sql语句运行前,必然有个解析过程,就好象java代码的编译一样。如果同样的语句运行多次,当然希望它是一次编译多次运行的。这样可以减少编译的过程。 PrepareStatement就是干这事的。 它其实返回一个编译后的标识。用这个标识系统就可以直接找到编译过的sql来运行。不必要把每次的sql都编译一遍。
此外有些sql只是部分值不同,其他都一样。那么就把不同的部分变成 参数,sql编译后,每次使用不同的参数来实行。
另外由于预编译了,那么sql注入的破坏方式就无效了。因为传入的参数不会改变sql语句的运行。
PreparedStatement预编译。先把sql语句先进行预编译,然后再执行。
具体的可以参照一下:http://www.cnblogs.com/liuhongfeng/p/4175765.html