Przygotowane oświadczenie Java nie działa
Stworzyłem mały 3-warstwowy program, składający się z: front end -> servlet -> database.
Front end Wprowadzam kilka szczegółów do formularza. Są przekazywane do serwletu, który renderuje niektóre HTML i wyświetla wartości wprowadzone do formularza, a także wywołuje klasę DatabaseHelper. DatabaseHelper łączy się i wstawia te same wartości do tabeli.
Wiem, że wartości są przekazywane do klasy serwletów, tak jak są wyświetlane w HTML. Więc problem musi leżeć w przygotowanym oświadczeniu. Problem polega na tym, że nie widzę żadnego błędu w samym oświadczeniu. Kiedy sprawdzam samą tabelę, nie ma tam żadnych danych.
Łączność z bazą danych jest funkcjonalna, ponieważ mogę wstawiać wartości do bazy danych za pomocą zakodowanych instrukcji, a nie przygotowanej instrukcji.
Oto spojrzenie, którego używam. Wszelkie porady są mile widziane.
public void addRegisterDetails(String name, String email, String country, String password, ){
try{
String driver = "com.mysql.jdbc.Driver";
Class.forName(driver).newInstance();
// Make db connection
con = DriverManager.getConnection(url, USERNAME, PASSWORD);
st = con.createStatement();
String query = " INSERT INTO user_information (name, email, country, password)" + " VALUES (?, ?, ?, ?)";
PreparedStatement preparedStmt = con.prepareStatement(query);
preparedStmt.setString (1, name);
preparedStmt.setString (2, email);
preparedStmt.setString (3, country);
preparedStmt.setString (4, password);
preparedStmt.execute();
}catch(ClassNotFoundException ex) {
System.out.println(ex);
}catch(Exception e){
e.printStackTrace();
}
}
Definicja tabeli
id | imię | e-mail | kraj | hasłowszystkie VARCHAR z wyjątkiem id, który jest typu INT.