Prepared文バー


PreparedStatement pStmt = conn.prepareStatement("INSERT INTO instructor VALUES(?,?,?,?)");
pStmt.setString(1, "88877");
pStmt.setString(2, "Perry");
pStmt.setString(3, "Finance");
pStmt.setInt(4, 125000);
pStmt.executeUpdate();
pStmt.setString(1, "88878");
pStmt.executeUpdate();
以上のコードは、JDBCがprepared文を使用する例です.クエリー文では、値が疑問符でprepared文に置き換えられます.prepared文が生成されると、データベース・システムはプリコンパイルされます.(疑問符の値が不明な場合にコンパイルされます.)疑問符の値が決定された場合(上記の例では、setStringまたはsetIntなどの方法で値が決定される).データベース・システムでは、コンパイルされたクエリー・ステートメントにのみ値を入力してクエリーを実行できます.したがって、同じクエリー文を複数回実行する場合、クエリー文を1回コンパイルするだけのprepared文を使用することは非常に有効です.
同じクエリーが複数回実行されない場合でも、ユーザーが入力した値を使用してクエリー文を生成する場合はprepared文を使用することが望ましい.Prepared文を使用しない場合、通常は"INSERT INTO instructor VALUES(" + v1 + "," + v2 + "," + v3 + "," + v4 + ")"などの文字列を接続してクエリー文を生成し、ユーザーが不適切な値を入力すると、構文に合わないクエリー文を生成したり、ハッカーの侵入を許可したりする可能性があります.(ハッカーはクエリ文に不適切な値を入力し、データベース内の情報を破損したり、SQL Injectionと呼ばれる機密情報を盗んだりします.)