Смисълът на подготвените оператори е, наред с другото, да не обединявате вашите заявки сами.
Искате да направите следното:
//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 инжекции, ако искате да знаете повече)