我在插入查询中创建了一个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>
答案 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];