Prepared文バー
3251 ワード
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と呼ばれる機密情報を盗んだりします.)Reference
この問題について(Prepared文バー), 我々は、より多くの情報をここで見つけました https://velog.io/@rkdfowns/Prepared-statement란テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol