我使用JSP创建了一个注册形式的用户信息。我希望在提交表单后将用户数据插入到postgre数据库中的userinfo表中。但是,不是将数据添加到此表中,而是给出了错误。请帮帮我!
<%
String fname = request.getParameter("fname");
String lname = request.getParameter("lname");
String email = request.getParameter("email");
String user = request.getParameter("uname");
String pwd = request.getParameter("pass");
String pwd2 = request.getParameter("pass2");
Class.forName("org.postgresql.Driver");
Connection con = DriverManager.getConnection("jdbc:postgresql://127.0.0.1:5432/UserInformation", "postgres", "123456789");
PreparedStatement st = con.prepareStatement("insert into userinfo(firstname, lastname, email, username, password) VALUES ('" + fname + "','" + lname + "','" + email + "','" + user + "','" + pwd + "'");
//ResultSet rs;
int i = st.executeUpdate();
if (i > 0) {
response.sendRedirect("welcome.jsp");
} else {
response.sendRedirect("login.jsp");
}
%>
输出结果为:
org.postgresql.util.PSQLException: ERROR: syntax error at end of input
Position: 142
答案 0 :(得分:2)
(这是一条评论,但我无法发表评论,因为没有50分)
您必须知道,使用JSP时,scriptlet是一种不好的做法。当代码牢记软件开发原则,如DRY(不要重复自己),SRP(单一责任原则)等等。您已将视图与域模型混合在一起,从不这样做。这样做的唯一方法是:
因此,您需要通过添加一些图层(控制器和模型)来重新构建应用程序。
答案 1 :(得分:0)
你有一个sql语法错误删除插入查询末尾的逗号和单引号(,'
)
int i = st.executeUpdate("insert into userinfo(firstname, lastname, email, username, password, city, province, country) VALUES ('" + fname + "','" + lname + "','" + email + "','" + user + "','" + pwd + "','" + city + "','" + province + "','" + country + "'");
另外使用PreparedStatement而不是Statement来避免sql注入。