public class SimpleJdbcTest1 throws <span style="line-height: 1.5;">ClassNotFoundException,</span><span style="line-height: 1.5;">SQLException</span><span style="line-height: 1.5;">{</span>
复制代码
对以上步骤的重点解释:
1,Statement提供在基层连接上运行SQL语句,并且返回访问结果。
Statement的方法:
sm.executeQuery(sql); // 执行数据查询语句(select)
sm.executeUpdate(sql); // 执行数据更新语句(delete、update、insert、drop等)
有三种Statement对象:
Statement
PreparedStatement(从Statement继承而来,预编译的Statement)
CallableStatement(从PreparedStatement继承而来)
*PreparedStatement可以使用"?"替代sql语句中的某些参数,使用"?"代替,先将带参数的sql语句发送到数据库,进行编译,然后PreparedStatement会将参数发送给数据库。
*在使用PreparedStatement时,在设置相应参数时,要指明参数的位置和类型,以及给出参数值。
*根据不同的参数类型使用不同的setXXX(参数的位置,参数值)来设置参数。
*PreparedStatement可以很好的防止注入式攻击。
String sql="select * from USER where name='"+name+"' and password='"+"'";
输入admin,123456之类的正常数据的时候是没有问题的。sql语句:select * from USER where name='admin' and password='123456'
如果输入任意用户名和abc'or'1'='1。sql语句:select * from USER where name='abc' and password='abc' or '1'='1'