Java 为什么我不能使用此代码插入数据库?-JSP
我试图根据前面jsp中的信息将数据插入到表中,但我不断收到错误。我用打印的语句检查数据是否正在传输,它们是否正在传输。所以我认为这和查询语句有关Java 为什么我不能使用此代码插入数据库?-JSP,java,mysql,jsp,servlets,Java,Mysql,Jsp,Servlets,我试图根据前面jsp中的信息将数据插入到表中,但我不断收到错误。我用打印的语句检查数据是否正在传输,它们是否正在传输。所以我认为这和查询语句有关 <%= session.getAttribute("userid")%> <%= session.getAttribute("deptid")%> <%= session.getAttribute("pid")%> <%= session.getAttribute("sec")%
<%= 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);
%>
在
但当我运行类似于:
String query = "INSERT INTO request VALUES("575",'76' '01', 'root')";
它很好用
请帮忙 您没有使用参数替换。您正在将值直接放入字符串中。因此,在适当的情况下需要分隔符:
String query = "INSERT INTO request VALUES("+userdbdeptid+", '"+userdbpid+"', '" + userdbsec + "', '"+userNetID+"')";
在您的示例中,您将这些值放在引号中,但在代码中它没有这样做。看起来您需要引用您的值,可能它们是表定义中的字符串。在生成的sql查询中没有引号。 如果要添加System.out.printlnquery;你会看到:
INSERT INTO request VALUES(575,76, 01, root)
在您的情况下,这不是有效的sql
必要时在sql中添加引号。谢谢。我有点太粗心了。准备的声明没有用在正确的方式上。在哪里?在查询中?
String query = "INSERT INTO request VALUES("+userdbdeptid+", '"+userdbpid+"', '" + userdbsec + "', '"+userNetID+"')";
INSERT INTO request VALUES(575,76, 01, root)