preparedstatement为什么比statement安全

preparedstatement对sql语句进行预编译,所以安全,而statement可能会有恶意sql语句的情况,就是检查登录username userpassword后跟 or 1=1这样的恶意sql语句,请问这个预编译为什么安全

预编译不是拼接字符串,所以没有sql注入的风险。拼接sql的问题是,你的参数和sql语句体本身分不出来。如果username是

 abc' or '1' = '1

拼接上你外面的sql,就构成了一个含义不同的sql语句。

而preparedstatement直接把参数代入编译,而不是让数据库去解析sql中的参数,就没有这个问题。

因为后者在编写SQL语句的时候会牵涉到引号的问题,导致很容易出错,而前者只需要对应好占位符,最后更新就可以了,简单,方便,又安全。希望能帮到你图片说明