Điểm của các câu lệnh đã soạn sẵn là không được tự nối các truy vấn của bạn.
Bạn muốn làm như sau:
//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()
Để biết thêm chi tiết, hãy xem hướng dẫn chính thức .
Có một số điều xảy ra đằng sau hậu trường giúp truy vấn an toàn, chẳng hạn như thoát các ký tự đặc biệt có thể cho phép thay đổi câu lệnh (google SQL chèn nếu bạn muốn biết thêm)