2012-02-02 19 views
0

がこのメソッドが呼び出された場合、私は次のコードは、準備済みの文を閉じて再度開くと、クエリプランが再計算されますか?

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

対象とするRDBMSによって異なります。

SQL Serverは、文"update Orders set productname = ? where Prod_Id = ?"のパラメータ化されたクエリプランをキャッシュできるので、利点があります。しかし、そのような単純なクエリでは、利益はかなり小さくなる可能性があります。

特定の状況で測定する必要があります(サーバーのCPUバウンド、またはI/Oバウンドですか?通常は後者です)。

ご了承ください。 PreparedStatementを使用することの本当の利点は、それを一度準備してから、さまざまなパラメーターを設定して何度も呼び出していることです。

+0

この特定のシナリオで準備済みのステートメントの代わりに通常のステートメントを使用すると、違いはありますか? – Rocky

+0

いくつかのパフォーマンス測定を実行する必要があります。 –

関連する問題