为什么我不能用这段代码插入数据库? - JSP

时间:2014-08-02 22:56:27

标签: java mysql jsp servlets

我试图根据前一个jsp的信息将数据插入表中,但我一直在收到错误。我有打印语句来检查数据是否正在传输,它们是否正在传输。所以我认为它与查询语句有关...

    <%= session.getAttribute("userid")%>
    <%= session.getAttribute("deptid")%>
    <%= session.getAttribute("pid")%>
    <%= session.getAttribute("sec")%>

<%
    Connection conn = null;
    PreparedStatement ps = null;
    ResultSet rs = null;        

    Class.forName(driverName);
    conn = DriverManager.getConnection(url, user, password);

    Statement statement = conn.createStatement();

    String userdbid = (String)session.getAttribute("userid");
    String userdbdeptid = (String)session.getAttribute("deptid");
    String userdbpid = (String)session.getAttribute("pid");
    String userdbsec = (String)session.getAttribute("sec");

    String query = "INSERT INTO request VALUES("+userdbdeptid+","+userdbpid+","+userdbsec+","+userNetID+")";

    statement.executeUpdate(query);

%>

我收到此错误:

    org.apache.jasper.JasperException: An exception occurred processing JSP page 

    statement.executeUpdate(query)

但是当我运行类似的东西时:

    String query = "INSERT INTO request VALUES("575",'76' '01', 'root')";

它运作得很好

请帮忙!

3 个答案:

答案 0 :(得分:0)

您没有使用参数替换。您将值直接放入字符串中。因此,您需要在适当的地方使用分隔符:

String query = "INSERT INTO request VALUES("+userdbdeptid+", '"+userdbpid+"', '" + userdbsec + "', '"+userNetID+"')";

答案 1 :(得分:0)

在您的示例中,您已将值放在引号中,但在代码中它并未执行此操作。看起来你需要引用你的值,可能它们是表定义中的字符串。

答案 2 :(得分:0)

在生成的sql查询中没有引号。 如果您要添加System.out.println(query);,您会看到:

INSERT INTO request VALUES(575,76, 01, root)

在你的情况下没有有效的sql。

在必要时在sql中添加引号。