在SELECT中将SELECT-WHERE查询嵌套在mysql中的INSERT-WHERE查询中

时间:2016-03-26 15:08:51

标签: java mysql jsp java-ee

我在插入查询中创建了一个select -where子查询,但在我的数据库中没有可见的更新。

我需要先从数据库中选择一个值,然后从数据库中传递该选定的值,然后在另一个查询中传递该选定的值,以从mysql数据库中获取另一个值。

这是我的示例代码

 <%@ page import="javax.servlet.http.HttpSession" %>
<%@ page import="java.util.*,java.sql.*" %>
<%@ page import="javax.servlet.http.HttpSession" %>
<%@page import="com.dbutil.CrudOperation"%>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <link rel="stylesheet" href="css/bootstrap.min.css">
  <link rel="stylesheet" href="css/fullview.css">
  <script src="jquery.js"></script>
  <script src="bootstrap.min.js"></script>
        <title>Job Details</title>
    </head>

    <body>

       <% Connection con = null;
            ResultSet rs = null;
            PreparedStatement ps = null;
            HttpSession hs = null;
            con = CrudOperation.createConnection();
            hs = request.getSession();
           String value=request.getParameter("idJob");
            String id = (String) hs.getAttribute("userinfo");
            %>
            <div class="container">



                 <%String strsql = "select name from register where uname=?"; 
                try
        {
            ps=con.prepareStatement(strsql);
            ps.setString(1, id);


            int rw1=ps.executeUpdate();


                if(rw1>0) {

                                con.commit();
                    String tryname=rs.getString("name");
                   String strsql1 = "insert into postjob1(applicants) values(?) where id=?"; 
                try
        {
            ps=con.prepareStatement(strsql1);
            ps.setString(1, tryname);
                        ps.setString(2,value);


            rs=ps.executeQuery();


                if(rs.next()) {
                    con.commit();
                    response.sendRedirect("confirm.jsp");


                }
                else{
                 response.sendRedirect("Oops.jsp");}

            }
            catch(SQLException se)
                {
                    System.out.println(se);
                }



                }
                else{
                response.sendRedirect("Oops1.jsp");}             
            }
            catch(SQLException se)
                {
                    System.out.println(se);
                }



   %>
                %>



            </div>
    </body>
</html>

2 个答案:

答案 0 :(得分:0)

Insert语句在表中创建新记录,并且没有where子句。因此,您的SQL中存在语法错误。

答案 1 :(得分:0)

SQL语句中存在语法错误。

String strsql1 = "insert into postjob1(applicants) values(?) where id=?";

INSERT INTO不能包含WHERE子句。 如果您想要更新表中的现有记录,请改用UPDATE表语句。您的查询将类似于

String strsql1 =UPDATE [Yourtable] SET [Tablecolumn] = '[updated-value]' WHERE [Tablecolumn] = [ExistingValue];