关于JDBC(三)--- 执行查询操作

java查询数据库数据时,常用的是PreparedStatement,PreparedStatement实现了Statement接口,所以它是Statement功能的扩展。我们没有必要在每次开始一个查询时都建立新的查询语句,而是准备一个带有宿主变量的查询语句,每次查询只需为该变量填入不同的字符串就可以反复多次的使用该语句。


每个宿主变量都用“?”,如果存在一个以上的变量,那么在设置变量值时必须注意“?”的位置。如果一个查询语句sql在Statement中生成ResultSet,sql查询语句的类型安全不足,它绕过编译器直接送到数据库编译执行。

String sql = "select * from students where name = ?";


由于跟Statement接口的关系,它的生成方式也不同。该sql语句直接在数据库编译

PreparedStatement ps = conn.prepareStatement(sql);

设置宿主变量,在ps对象中缓存;要查询另一位同学时,需要对宿主变量重新设置。

ps.setString(1, "xiaoming");

把参数传入数据库,并运行

ps.executeUpdate();


许多数据库驱动程序通常会自动缓存预备语句,如果要执行两次相同的查询,数据库通常会直接重用查询策略,因此,无需过多考虑调用PreparedStatement的开销。

有些程序猿不喜欢用复杂的sql语句去得到结果集,而是使用大量的代码去遍历多个结果集,但是这种方法效率非常低。既然数据库也是一个程序,为什么我们不让他来为我们分担一点呢,一般而言,可以使用SQL解决的问题,就不要使用Java程序。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值