我想将下拉列表中显示的值保存到数据库中。该列表是从另一个数据库检索的。当我尝试保存它时,将保存表的id列,而不是下拉列表中显示的值。
我有两个数据库(cmsdb)和(testDB)。 testDB的表(学习计划)有两列(pos_id)和(pos_name)。 cmsdb有一个表(kasuStudent)。
下面的代码片段将“学习计划”表中的值成功加载到了下拉列表中。
<table>
<tr>
<td>Programme*</td>
<td><p>
<select name='Programme' onchange="showDepartment(this.value)">
<option value="none">--Select Programme--</option>
<%
Class.forName("com.mysql.jdbc.Driver").newInstance();
Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "");
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery("Select * from programmeofstudy");
while (rs.next()) {
%>
<option value=<%=rs.getString(1)%>><%=rs.getString(2)%></option>
<%
}
%>
</select>
<p></td>
</tr>
前面提到的问题是,每当我尝试保存值时。 pos_id将被保存到kasuStudentDB,而不是pos_name被保存。
如何保存pos_name。
这是用于插入数据库的代码片段,以防您需要查看。
<%@ page import ="java.sql.*" %>
<%
String programmeOfStudy = request.getParameter("Programme");
Class.forName("com.mysql.jdbc.Driver");
Connection con =
DriverManager.getConnection("jdbc:mysql://localhost:3306/cmsdb",
"root", "");
Statement st = con.createStatement();
int i = st.executeUpdate("insert into kasustudent(CourseOfStudy) values ('" + programmeOfStudy + "')");
if (i > 0) {
%>
<script language='javascript'>
window.alert('Account Successfully Created!! \n Login to access your Dashboard!');
window.location='StudentLogin.jsp';
</script>
<%
} else {
%>
<script language='javascript'>
window.alert('Account Not Created Try again!');
window.location='StudentCreateAccount.jsp';
</script>
感谢您的预期答复。
答案 0 :(得分:0)
相反:
<option value=<%=rs.getString(1)%>><%=rs.getString(2)%></option>
这样做:
<option value=<%=rs.getString(2)%>><%=rs.getString(2)%></option>
所以...用jsp编写Java代码是不好的。尝试将Java代码移至servlet并阅读有关EL的信息。
https://beginnersbook.com/2013/11/jsp-expression-language-el/