statement(Statement和PrepareStatement的区别)

Statement和PrepareStatement的区别

起首来看看它们之间的接洽,两者都是接口,都是由Connection接口创建取得的,而PreparedStatement呢,它是Statement的子接口,是承继于Statement接口而取得的。

再来看一看它们之间的区别

那么PreparedStatement和Statement比拟呢,有以下几点利益。

1.从代码的可读性和可维护性来说

PreparedStatement在实行sql语句时可以包含动态参数占位符“?”,在实行时可以为占位符“?”动态设置参数值,而Statement不支持占位符“?”交换变量,只能在sql中拼接参数。

以是在代码的可读性以及可维护性上,PreparedStatement接口大大提高了代码的可读性和可维护性。

2.PreparedStatement会尽最大约莫提高功能

我们晓得sql语句的在数据库中实行都是必要DBMS编译的,而PreparedStatement会预编译sql语句,因此当多次实行时,只需DBMS运转sql语句,而不必再编译。而Statement没有预处理,每次都要重新编译,以是当多次实行这条sql语句时,PreparedStatement听从会大大的提高。

3.最紧张的一点是PreparedStatement可以避免sql注入,极大地提高了宁静性

PreparedStatement可避免sql注入。sql注入情况如下所示:

假如有一条登录的sql语句:

"select * from user where name = 'zhangsan' and password = 123456";

Statement的sql语句是如此写的:

"select * from user where name = '" + username + "' and password ='" + password + "'";

如此我们就发觉输入用户名:'or'1=1'#,暗码随意输入时,

Statement是将这个和sql语句做字符勾通接到一同实行,变成了select * from user where `username` = ''or' 1=1'# and `password` =123456,而#这个字符后方的在MySQL数据库中会把它当做正文,以是sql就变成了select * from user where `username` = ''or'1=1',如此的sql语句实行会招致永久都可以登录告捷。而PreparedStatement是将'or'1=1'# 作为一个字符串赋值给占位符“?”赋值,作为"用户名"字段的对应值,显然如此SQL注入就可以制止了。

内容底部广告位(手机)
标签:

管理员
草根站长管理员

专注网站优化+网络营销,只做有思想的高价值网站,只提供有担当的营销服务!

上一篇:SITE(“地点”是“site”还是“cite”?)
下一篇:返回列表

相关推荐