java PreparedStatement操作数据库的使用方法

来源:互联网 发布:sql server 2008配置 编辑:程序博客网 时间:2024/04/25 15:22

PreparedStatement接口继承自Statement接口,PreparedStatement比普通Statement对象使用起来更加灵活更有效率.并且比Statement更加安全,因为Statement有一个漏洞就是可以sql注入

第一步:创建PreparedStatement对象

PreparedStatement  pstm 同样是通过Connection的preparedStatement(sql)方法来创建对象,sql语句可具有一个或者多个输入参数,这些输入参数的值在SQL语句创建时未被指定,而是为每个输入参数保留一个问号'?'作为占位符;

示例:

下面的创建语句中就带有3个输入参数的SQL语句  pstm=con.prepareStatement("update dog set health=?,love=? where id =?");

第二步:设置每个输入参数的值 

通过调用set*()方法来完成(*代表数据类型)

代码:

pstm.setInt(1,10);

pstm.setInt(2,90);

pstm.setString(3,"d1");

(注意事项:占位符位置从1开始)

第三步:执行SQL语句 

执行方法与Statement一样.比如:pstm.executeUpdate(); 

优点: 创建PreparedStatement对象时会对SQL语句进行预编译,所以执行速度要快于Statement对象,因此,如果程序中存在需要多次执行SQL语句时,应该使用PreparedStatement对象来执行数据库操作,以提高效率

示例: 

String sql="update dog set health=?,love=? where id =?"; 

pstm=con.prepareStatement(sql); 

pstm.setInt(1,10);

pstm.setInt(2,90);

pstm.setString(3,"d1");

pstm.executeUpdate();

pstm.setInt(1,22);

pstm.setInt(2,33);

pstm.setString(3,"d2");

pstm.executeUpdate(); 

总结: 

PreparedStatement比Statement好在哪里?

 1:提高了代码的可读性和可维护性

虽然使用PreparedStatement来代替Statement会多几行代码,但避免了繁琐麻烦又容易出错的SQL语句凭借,提高了代码的可读性和可维护性

 2:提高了SQL语句执行的性能 

创建Statement对象时不使用SQL语句做参数,不会解析和编译SQL语句,每次调用方法执行SQL语句时都要进行SQL语句解析和编译操作,即操作相同仅仅的数据不同.
创建PreparedStatement对象时使用SQL语句做参数,会解析和编译该SQL语句,也可以使用带占位符的SQL语句做参数,在通过set*()方法给占位符赋值后执行SQL语句时无需再次解析和编译SQL语句,直接执行即可,多次执行相同操作可以大大提高性能

 3:提高了安全性

PreparedStatement使用预编译语句,传入的任何数据都不会和已经预编译的SQL语句进行拼接,避免了SQL注入攻击


0 0
原创粉丝点击