有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如果我们关闭并重新打开一个准备好的语句,查询计划会被重新计算吗?

需要了解一下它是如何工作的吗

我有以下代码

  public static void updateOrdersPrepared(int productId , String productName){

    Connection con = getConnection();

    try {
            pstmt = con.prepareStatement 
                  ("update Orders set productname = ? where Prod_Id  = ?");

            pstmt.setInt(2, productId);
            pstmt.setString(1, productName);
            pstmt.executeUpdate();
            pstmt.close();
            con.close();

    } catch(SQLException ex) {
        System.err.println("SQLException: " + ex.getMessage());
    }
JOptionPane.showMessageDialog(null,"Data Updated into Orders Table");
}

现在,如果这个方法被调用了N次,那么准备好的语句的查询计划将被计算N次还是只计算一次

在这种情况下,使用事先准备好的陈述是否真的有好处


共 (1) 个答案

  1. # 1 楼答案

    这将取决于您针对的RDBMS

    SQL Server能够缓存语句"update Orders set productname = ? where Prod_Id = ?"的参数化查询计划,因此这将带来好处。然而,这是一个如此简单的问题,其好处可能非常小

    您应该在特定情况下进行测量(您的服务器是CPU受限还是I/O受限?通常是后者)

    正如你所知。使用PreparedStatement的真正优势在于准备一次,然后使用不同的参数集多次调用