プリペアドステートメントのポイントは、とりわけ、クエリを自分で連結しないことです。
次のことを行います:
//first you "prepare" your statement (where the '?' acts as a kind of placeholder)
PreparedStatement st = con.prepareStatement("insert into user (user,age,school,password) values (?,?,?,?);");
//now you bind the data to your parameters
st.setString(1, user);
...
//and then you can execute it
st.executeUpdate()
詳細については、公式チュートリアル を参照してください。 。
クエリを安全にする舞台裏で起こっていることがいくつかあります。たとえば、ステートメントを変更できる特殊文字をエスケープするなどです(詳細を知りたい場合は、Google SQLインジェクション)