java - 根据jsp中的输入选择表

标签 java html mysql jdbc

我在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);

最佳答案

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

<%
  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 并在那里使用 scriplet(规范不鼓励这样做)来处理提交的数据并不是最佳选择。我宁愿建议您将表单提交到 Servlet 并在那里编写所有 Java 代码。

此外,您可能希望优先查看 PreparedStatement,而不是 Statement

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

How to avoid Java code in JSP files?

When should we use a PreparedStatement instead of a Statement?

关于java - 根据jsp中的输入选择表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38678808/

相关文章:

java - 将字符串分成子字符串,将它们转换为整数,并将它们分配给实例变量

java - 为什么会抛出向上转换检查异常

javascript - 在同一个div中渲染不同的部分

mysql - 使用 WooCommerce 进行 'O.order_id' SQL 查询中的未知列 'on clause'

php - 使用渲染(或链接)方法查看 Laravel 错误,结合 2 个查询

java - 异常应该位于 Maven 项目目录中的什么位置?

html - 简单的 jsfiddle 示例不起作用

html - 左侧 float 的下拉菜单和导航菜单变得模糊

mysql - 使用 Rails,我可以在不使用 ActiveRecord 的情况下从遗留数据库中检索数据吗?

java - 由于 @NameQueries 中的错误而无法实例化 LocalContainerEntityManagerFactoryBean?