gpt4 book ai didi

java - 什么时候使用Statement比PreparedStatement更好?

转载 作者:行者123 更新时间:2023-12-01 08:45:27 25 4
gpt4 key购买 nike

关于何时以及为何最好使用 PreparedStatement 有很多问答。超过Statement在 JDBC 中但不是相反?换句话说,什么时候以及为什么最好使用 Statement超过PreparedStament ?我正在努力寻找更好的用例。我看到一些评论似乎表明在某些情况下它的性能更好,但它很快又回到 PreparedStatement 。那么什么时候使用Statement比较好?超过PreparedStatement

如:

connection.createStatement().executeQuery(sql);

对比

PreparedStatement preparedStatement = connection.preparedStatement(sql);
preparedStatement.execute();

需要任何额外的代码。

最佳答案

在大多数现实生活中,很少有 createStatementpreparedStatement 更好的情况。

我相信几乎每个人都知道使用准备好的语句的好处,仅举几例:

  • 不易受到 SQL 注入(inject)攻击
  • 性能更好,避免 SQL 解析具有不同参数的相同 SQL
  • 等等

这些好处大部分来自于在使用准备好的语句时重用相同的语句以及单独设置参数(而不是嵌入查询本身)。

使用createStatement()的唯一好处(据我所知)是您可以使用相同的语句对象来执行不同的SQL,而在使用预准备语句时,您需要为以下对象创建PrepredStatement每个查询。

在现实生活中,这很少有意义。但是,当您开发一个允许用户输入任意查询的应用程序(这意味着您无法单独设置参数)时,使用准备好的语句没有明显的好处。然后,如果此类应用程序要使用不同的查询字符串进行多次查询(例如,您正在构建 SQL 客户端),则执行一次 createStatement ,并重用该 Statement 执行不同查询的对象可能会通过较少的对象分配获得一些(边际)性能增益。

关于java - 什么时候使用Statement比PreparedStatement更好?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45972001/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com