我正在尝试使用JSP将我的网页中的表单中的字段存储到MySQL中的数据库中。我没有收到任何错误,但是当我点击提交时,我没有看到我数据库中的数据。请帮我确定一下我的问题。我有以下代码:
<div id="container">
<form action = "insertData.jsp" method = "post">
<table>
<tr><td>E-mail/username:</td><td><input type="text" name="e-mail"></td></tr>
<tr><td>Password:</td><td><input type="password" name="password"></td></tr>
<tr><td>First Name:</td><td><input type="text" name="fName"></td></tr>
<tr><td>Last Name:</td><td><input type="text" name="lName"></td></tr>
<tr><td>Date Of Birth:</td><td><input type="text" name="dateOfBirth"></td></tr>
<tr><td>Account Type:</td><td><input type="text" name="type"></td></tr>
<tr><td></td><td><input type="submit" value="Submit"></td></tr>
</table>
</form>
</div>
</body>
和我的JSP代码
<%
Connection con = null;
String email = request.getParameter("e-mail");
String password = request.getParameter("password");
String firstName = request.getParameter("fName");
String lastName = request.getParameter("lName");
String dob = request.getParameter("dateOfBirth");
String accountType = request.getParameter("type");
String queryText = "insert into user values('" + email + "'+'" + password + "','" + firstName + "','" + lastName + "','" + dob + "','" + accountType + "')";
try {
Class.forName("com.mysql.jdbc.Driver").newInstance();
con = DriverManager.getConnection("jdbc:mysql://localhost:3306/project", "root", "B@neswor1");
Statement stat = con.createStatement();
ResultSet rst = stat.executeQuery(queryText);
System.out.println("Data is successfully inserted!");
rst.close();
stat.close();
con.close();
} catch (Exception e) {
}
System.out.println("Success");
%>
请帮我识别我错过的内容
答案 0 :(得分:2)
问题的直接原因是您的插入查询:
String queryText = "insert into user values('" + email + "'+'" +
password + "','" + firstName + "','" + lastName + "','" + dob + "','" +
accountType + "')";
如果仔细观察,电子邮件文字后面没有逗号。但是你可以通过使用准备好的声明来避免这种情况:
String sql = "insert into user values (?, ?, ?, ?, ?, ?)";
PreparedStatement ps = con.prepareStatement(insertTableSQL);
ps.setString(1, email);
ps.setString(2, password);
ps.setString(3, firstName);
ps.setString(4, lastName);
ps.setString(5, dob);
ps.setString(6, accountType);
ps.executeUpdate();
请注意,使用语句可以更轻松地查看构建查询字符串的方式。它还可以让你摆脱丑陋的字符串连接和转义,这很容易出错。
@duffymo指出了你的代码的许多其他潜在问题,其中一些但不一定会导致它崩溃。我看到的另一个问题是你的出生日期字段被视为一个字符串,它可能应该是一个日期,你应该作为日期插入你的数据库。
答案 1 :(得分:1)
此代码有太多问题: