我创建了一个小型 3 层程序,包括:前端 -> servlet -> 数据库。
前端我在表单中输入了一些细节。它们被传递给一个 servlet,它将呈现一些 HTML 并显示输入到表单中的值,同时还调用一个类 DatabaseHelper。然后,DatabaseHelper 连接这些相同的值并将其插入到表中。
我知道这些值正在传递给 servlet 类,因为它们正在 HTML 中显示。所以问题必须出在准备好的语句中。问题是,我看不出语句本身有任何错误。当我查询表本身时,那里没有数据。
数据库连接是功能性的,因为我可以使用硬编码语句将值插入数据库,而不是使用准备好的语句。
这是我使用的语句。非常感谢任何建议。
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();
}
}
表定义
编号| 姓名 | 电子邮件 | 国家 | 密码
所有 VARCHAR,但 id 为 INT 类型。