新闻资讯

新闻资讯 产品更新

使用PreparedStatement执行sql增、删、改、查语句

编辑:admin     时间:2018-06-06
Statement与PreparedStatement的区别:
1. PreparedStatement可以写动态参数化的查询
用PreparedStatement你可以写带参数的sql查询语句,通过使用相同的sql语句和不同的参数值来做查询比创建一个不同的查询语句要好
2. PreparedStatement比 Statement 更快
PreparedStatement用来执行SQL语句查询的时候。数据库系统会对sql语句进行预编译处理,预处理语句将被预先编译好,这条预编译的sql查询语句能在将来的查询中重用,这样一来,它比Statement对象生成的查询速度更快。
3. PreparedStatement可以防止SQL注入式攻击
如果你是做Java web应用开发的,那么必须熟悉那声名狼藉的SQL注入式攻击。Sony就遭受了SQL注入攻击,被盗用了一些Sony play station(PS机)用户的数据。在SQL注入攻击里,恶意用户通过SQL元数据绑定输入。
例如:

PreparedStatement的局限性
尽管PreparedStatement非常实用,但是它仍有一定的限制。
为了防止SQL注入攻击,PreparedStatement不允许一个占位符(?)有多个值,在执行有IN子句查询的时候这个问题变得棘手起来。
注意:占位符索引位置从1开始,而不是从0开始。
接下来给大家展示使用使用·PreparedStatement·执行sql增、删、改、查语句的过程:
实体类

PreparedStatement的局限性
尽管PreparedStatement非常实用,但是它仍有一定的限制。
为了防止SQL注入攻击,PreparedStatement不允许一个占位符(?)有多个值,在执行有IN子句查询的时候这个问题变得棘手起来。
注意:占位符索引位置从1开始,而不是从0开始。
接下来给大家展示使用使用·PreparedStatement·执行sql增、删、改、查语句的过程:

实体类



 
public Emp(int empno, String ename, String job, int mgr, Date hiredate, double sal, double comm, int deptno) {

public Emp(String ename, String job, int mgr, Date hiredate, double sal, double comm, int deptno) { super();


dao接口

工具类




dao接口的实现


String sql = "insert into emp (empno,ename,job,mgr,hiredate,sal,comm,deptno) " + "values (?,?,?,?,?,?,?,?)"; Object obj[] = {emp.getEmpno(),emp.getEname(),emp.getJob(),emp.getMgr(), emp.getHiredate(),emp.getSal(),emp.getComm(),emp.getDeptno()}; DBUtils.update(sql, obj);


@Override public boolean update(Emp emp) { String sql = "update emp set ename=?,job=?,mgr=?,hiredate=?,sal=?,comm=?,deptno=? where empno=?"; Object obj[] = {emp.getEname(),emp.getJob(),emp.getMgr(), emp.getHiredate(),emp.getSal(),emp.getComm(),emp.getDeptno(),emp.getEmpno()}; re = DBUtils.update(sql, obj); DBUtils.close(null, ps, conn); return re; }

测试类



郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。

回复列表

相关推荐