共同
1.PreparedStatement继承自Statement
2.PreparedStatement中没有close()方法,PreparedStatement的close()继承自Statement
区别
Statement:必须先打开数据库链接,然后将语句放入数据库中执行,才能知道数据库执行的结果以及SQL语句有无语法错误。
PreparedStatement:编译接口在不打开数据库的情况下先验证SQL语句是否有问题。有简单的语句验证。可以使用替代符。
PreparedStatement的使用
PreparedStatement ps = conn.PreparedStatement(SQL语句);//先验 ps.set类型(第几个占位符,替换的数据); //1.注意传入的类型 //2.Date类型需要转换 //3.占位符从1开始计数 ps.executeUPdate();//运行
其他
1.SQL注入
' or 1=1 --
2.账户验证
select count(0) from 表名 where 账户列名 = '值1' and 密码列名 = '值2' -- 用executeQuery()语句查询,返回用Resultset接收,并提取出显示行数的值 -- 如果返回类型是0,代表没有该用户,返回>0代表该用户存在
3.三层架构
-
界面/View
-
业务/Service
-
数据/Dao(其中包含对象/bean)