【问题标题】:choose table according to input in jsp根据jsp中的输入选择表
【发布时间】:2016-12-05 08:25:29
【问题描述】:

我在mysql数据库中有两张表,一张给学生,一张给老师。两个表具有相同的列。

下面的代码只将数据插入到教师表中。如果用户选择教师单选按钮,则注册数据应存储在教师表中。如果用户选择学生电台,则注册数据应存储在学生表中。对此有什么解决方案?

enter image description here

index.jsp

<form  method="GET " action="statement2.jsp" autocomplete="on"> 
  <input type="radio" name="gender" value="Teacher" checked/> Teacher
  <input type="radio" name="gender" value="Student"/>Student
  <input type="submit" value="Login" /> 
  <input type="button" onclick="location.href='reg.jsp';" value="Sign Up" />
</form>

statement2.jsp

<%
   String name=request.getParameter("first");
   String abc=request.getParameter("last");
   String cde=request.getParameter("user");
   String pass=request.getParameter("password");
   String confpass=request.getParameter("confirmpass");
   String emails=request.getParameter("email");
   String months=request.getParameter("month");
   String day=request.getParameter("day");
   String year=request.getParameter("year");
   String gender=request.getParameter("gender");

   String Sql="insert into teacher2(firstname,lastname,username,password,confirmpassword,email,month,day,year,gender) values('"+name+"','"+abc+"','"+cde+"','"+pass+"','"+confpass+"','"+emails+"','"+months+"','"+day+"','"+year+"','"+gender+"')";
   st.executeUpdate(Sql);
%>

修正后 statement2.jsp

<%
   String name=request.getParameter("first");
   String abc=request.getParameter("last");
   String cde=request.getParameter("user");
   String pass=request.getParameter("password");
   String confpass=request.getParameter("confirmpass");
   String emails=request.getParameter("email");
   String months=request.getParameter("month");
   String day=request.getParameter("day");
   String year=request.getParameter("year");
   String gender=request.getParameter("gender");

   if (gender != null) {
   String table = gender.equals("teacher") ? "teacher2" : "student";
   // replace dots with your values
   String query = "INSERT INTO " + table + "(firstname,lastname,username,password,confirmpassword,email,month,day,year,gender) VALUES ('"+name+"','"+abc+"','"+cde+"','"+pass+"','"+confpass+"','"+emails+"','"+months+"','"+day+"','"+year+"','"+gender+"')";

   st.executeUpdate(query); 
  %>

这个查询出了什么问题。为什么这个查询只在一张学生表中插入数据

index.jsp

   <input type="radio" name="gender" value="teacher" checked/> Teacher
   <input type="radio" name="gender" value="Student"/>Student

statement2.jsp

   String gender = request.getParameter("gender");
   if (gender != null) {
   String table = gender.equals("teacher") ? "teacher2" : "student";
// replace dots with your values
   String query = "INSERT INTO " + table + "(firstname,lastname,username,password,confirmpassword,email,month,day,year,gender) VALUES ('"+name+"','"+abc+"','"+cde+"','"+pass+"','"+confpass+"','"+emails+"','"+months+"','"+day+"','"+year+"','"+gender+"')";
  st.executeUpdate(query);

【问题讨论】:

  • 这段代码只在一个表中插入了数据老师我想在学生中插入数据如果用户选择学生的单选按钮,那将是什么代码?

标签: java html mysql jdbc


【解决方案1】:

只需选择一个合适的表,然后将其传递给您的查询语句

<%
  String gender = request.getParameter("gender");
  if (gender != null) {
    String table = gender.equals("teacher") ? "teacherTable" : "studentTable";
    // replace dots with your values
    String query = "INSERT INTO " + table + "(...) VALUES (...)";
    st.executeUpdate(query); 
  }
%>

请注意,重定向到另一个 jsp 并在那里使用脚本(规范不鼓励)处理提交的数据并不是最佳选择。我宁愿建议您将表单提交到 Servlet 并在那里编写所有 Java 代码。

您可能还想看看PreparedStatement 而不是Statement

如果您有兴趣,请查看这些答案

How to avoid Java code in JSP files?

When should we use a PreparedStatement instead of a Statement?

【讨论】:

  • 它告诉你括号有语法错误。检查所有左括号和右括号是否就位。
  • 当单选按钮在教师身上时,数据不会插入到教师表中,但当单选按钮在学生身上时,数据不会插入到学生表中
  • &lt;input type="radio" name="gender" value="teacher" checked/&gt; Teacher 但还是有问题
  • 我认为问题出在String table = gender.equals("teacher") ? "teacher2" : "student";
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-05-03
  • 2013-03-08
  • 2021-10-24
  • 2013-03-10
  • 1970-01-01
  • 1970-01-01
  • 2021-07-28
相关资源
最近更新 更多