gpt4 book ai didi

java - 从下拉列表中获取外键ID

转载 作者:行者123 更新时间:2023-12-01 12:06:33 24 4
gpt4 key购买 nike

我有两个表学生表和部门表,我的学生表有包含 Student_id、firstname、department_id(foreignkey) 的列。还有部门表的department_id 和department_name。部门表中的department_id是自动递增的。

这里学生表连接到部门,并且部门的外键为department_id。在学生表学生部门(department_id(fk)) 的下拉列表中,将显示所有部门名称,如果我选择 1 个部门名称。我想获取它的部门ID并将其保存在department_id(foreignkey)中,而不是它本身的department_name中。因为我有一个错误,其中包含“java.lang.NumberFormatException:对于输入字符串:“数学系””

这是我的 Servlet 类

    String userdepartment= request.getParameter("department_id");

String userfirstname = request.getParameter("firstname");

String userlastname = request.getParameter("lastname");

studentbean.setDepartment_id(userdepartment);

studentbean.setFirstname(userfirstname);

studentbean.setLastname(userlastname);

这是我的 JSP 文件

    <%
try{
Class.forName("com.mysql.jdbc.Driver").newInstance();
Connection connection = DriverManager.getConnection("jdbc:mysql://localhostdb?user=root&password=root");

Statement statement = connection.createStatement() ;

resultset =statement.executeQuery("select * from department") ;

%>
<tr>
<td>Department Name</td>
<td><select name="department_id">
<% while(resultset.next()){ %>
<option><%= resultset.getString(2)%></option>
<% } %>
</select>
</td></tr>
<%
}
catch(Exception e)
{
out.println("Error"+e);
}
%>

最佳答案

首先,一些有用的提示:

resultset =statement.executeQuery("select * from department") ;

切勿选择*始终按照您希望字段出现的顺序指定字段。这可能是您问题的根源

与此相关的是,您正在使用 getString 的数字索引版本

<option><%= resultset.getString(2)%></option>

也不要这样做。指定所需字段的名称,如下所示:

<option><%= resultset.getString("department_name") %></option>

像这样将 SQL 直接放入 JSP 中通常也被认为是不好的做法。最好在 servlet 中执行此类操作,然后使用请求属性将对象发送到 JSP,或者更好使用框架。然而,这只是一种风格批评,并不会真正影响您的结果。

现在,解决您的实际问题。希望这两个提示已经为您提供了代码无法运行的线索,但让我们看一下错误消息。

java.lang.NumberFormatException: For input string: "Math Department"

您的程序(我认为您尚未发布的部分)正在尝试将该下拉菜单的值解码为整数,但“数学系”。显然,这不是一个数字,因此会引发错误。您需要做的是将部门名称显示为菜单标签,但将 id 作为值。因此,查看您的选项标签,您需要执行以下操作:

<option value="<%= resultset.getInt("department_id") %>">
<%= resultset.getString("department_name") %>
</option>

这将向用户显示部门的名称,但将 ID 发送回 servlet 进行处理。

关于java - 从下拉列表中获取外键ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27548068/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com