回答

收藏

在循环中创建准备好的句子

技术问答 技术问答 197 人阅读 | 0 人回复 | 2023-09-13

为了澄清:    我知道PreparedStatement在循环外创建是正确的。出于好奇,我问了这个问题。
! J$ S0 Q! [6 G. E; E1 ?假设我正在PreparedStatement使用总是一样的SQL查询创建循环内部。
1 j7 s2 |8 z) w' ~. G* `* B: hfinal String sql = "INSERT INTO ...";while (condition) {   ...   PreparedStatement statement = connection.prepareStatement(sql);   // Fill values of the prepared statement   // Execute statement   ...}因为PreparedStatement总是重建对象吗?还是底层数据库总是识别它?PreparedStatement创建该SQL同样的查询和重复使用SQL查询?6 s9 V6 s$ F/ y. X8 N
                                                               
+ x2 i4 @- S/ S7 m& ?2 I. Q, U# y- g    解决方案:                                                               
2 ], p$ ~# {2 r% Y5 f) z                                                                有些驱动程序会缓存准备好的句子,是的。例如,浏览以下内容Oracle文档:http7 j& e6 V# M( b8 w
:8 d$ f6 A6 k0 r/ r4 R5 ]( G: b/ `( n# d
//docs.oracle.com/cd/B10501_01/java.920/a96654/stmtcach.htm/ x& c0 {3 j0 `* |4 V/ w$ D
我不认为所有的驱动程序都必须满足这个要求,尽管当然JDBC可能的驱动程序功能。
  u* O! S% H( A5 p" g换句话说,如果你真的想有效地使用预备句,那么在每个循环迭代中使用的预备句似乎更有意义。
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则