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

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
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值