Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么我不能使用此代码插入数据库?-JSP_Java_Mysql_Jsp_Servlets - Fatal编程技术网

Java 为什么我不能使用此代码插入数据库?-JSP

Java 为什么我不能使用此代码插入数据库?-JSP,java,mysql,jsp,servlets,Java,Mysql,Jsp,Servlets,我试图根据前面jsp中的信息将数据插入到表中,但我不断收到错误。我用打印的语句检查数据是否正在传输,它们是否正在传输。所以我认为这和查询语句有关 <%= session.getAttribute("userid")%> <%= session.getAttribute("deptid")%> <%= session.getAttribute("pid")%> <%= session.getAttribute("sec")%

我试图根据前面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);

%>

但当我运行类似于:

    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)