【发布时间】:2014-04-28 08:34:24
【问题描述】:
我在 jsp 中有两个下拉列表,必须从数据库中获取下拉列表并在 jsp 中显示。我是第一次使用jsp。你能给我一个从数据库中获取下拉列表并在 jsp 下拉元素中显示值的想法吗?提前致谢
【问题讨论】:
我在 jsp 中有两个下拉列表,必须从数据库中获取下拉列表并在 jsp 中显示。我是第一次使用jsp。你能给我一个从数据库中获取下拉列表并在 jsp 下拉元素中显示值的想法吗?提前致谢
【问题讨论】:
如何从数据库中获取下拉值并在jsp中显示:
从 Mysql 中动态获取数据到 Jsp 中的(下拉)选择选项。这篇文章说明了,从 mysql 数据库中获取数据并显示在 Jsp 中的选择选项元素中。在阅读这篇文章之前,您应该知道以下文章,即:
如何将 Mysql 数据库连接到 jsp。
如何在 MySql 中创建数据库并将数据插入数据库。 使用下面的数据库,来说明‘Dynamically Fetch data from Mysql to (drop down)
选择 Jsp 中的选项:
id City
1 London
2 Bangalore
3 Mumbai
4 Paris
以下代码用于在 MySql 数据库中插入数据。使用的数据库是“城市”,用户名=“root”,密码也设置为“root”。
Create Database city;
Use city;
Create table new(id int(4), city varchar(30));
insert into new values(1, 'LONDON');
insert into new values(2, 'MUMBAI');
insert into new values(3, 'PARIS');
insert into new values(4, 'BANGLORE');
这是从 Mysql 动态获取数据到 Jsp 中的(下拉)选择选项的代码:
<%@ page import="java.sql.*" %>
<%ResultSet resultset =null;%>
<HTML>
<HEAD>
<TITLE>Select element drop down box</TITLE>
</HEAD>
<BODY BGCOLOR=##f89ggh>
<%
try{
//Class.forName("com.mysql.jdbc.Driver").newInstance();
Connection connection =
DriverManager.getConnection
("jdbc:mysql://localhost/city?user=root&password=root");
Statement statement = connection.createStatement() ;
resultset =statement.executeQuery("select * from new") ;
%>
<center>
<h1> Drop down box or select element</h1>
<select>
<% while(resultset.next()){ %>
<option><%= resultset.getString(2)%></option>
<% } %>
</select>
</center>
<%
//**Should I input the codes here?**
}
catch(Exception e)
{
out.println("wrong entry"+e);
}
%>
</BODY>
</HTML>
【讨论】:
可以学习一些JSP页面直接访问数据库(mysql)的教程here
注意事项:
在jsp页面中导入sql标签库
<%@ taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql"%>
然后在页面上设置数据源
<sql:setDataSource var="ds" driver="com.mysql.jdbc.Driver" url="jdbc:mysql://<yourhost>/<yourdb>" user="<user>" password="<password>"/>
现在在页面上查询您想要的内容
<sql:query dataSource="${ds}" var="result"> //ref defined 'ds'
SELECT * from <your-table>;
</sql:query>
最后,您可以使用c:forEach 标记在页面上填充下拉列表,以迭代select 元素中的结果行
<c:forEach var="row" items="${result.rows}"> //ref set var 'result'
<option value='<c:out value="${row.key}"/>'><c:out value="${row.value}"/</option>
</c:forEach>
【讨论】:
我在我的代码中做了这个来做到这一点
注意: 我是初学者。
这是我的jsp代码。
<%
java.sql.Connection Conn = DBconnector.SetDBConnection(); /* make connector as you make in your code */
Statement st = null;
ResultSet rs = null;
st = Conn.createStatement();
rs = st.executeQuery("select * from department"); %>
<tr>
<td>
Student Major : <select name ="Major">
<%while(rs.next()){ %>
<option value="<%=rs.getString(1)%>"><%=rs.getString(1)%></option>
<%}%>
</select>
</td>
【讨论】:
下面的示例代码详细说明了这一点。
<%@page import="java.sql.*, java.io.*,listresult"%> //import the required library
<%
String label = request.getParameter("label"); // retrieving a variable from a previous page
Connection dbc = null; //Make connection to the database
Class.forName("com.mysql.jdbc.Driver");
dbc = DriverManager.getConnection("jdbc:mysql://localhost:3306/works", "root", "root");
if (dbc != null)
{
System.out.println("Connection successful");
}
ResultSet rs = listresult.dbresult.func(dbc, label); //This function is in the end. The function is defined in another package- listresult
%>
<form name="demo form" method="post">
<table>
<tr>
<td>
Label Name:
</td>
<td>
<input type="text" name="label" value="<%=rs.getString("labelname")%>">
</td>
<td>
<select name="label">
<option value="">SELECT</option>
<% while (rs.next()) {%>
<option value="<%=rs.getString("lname")%>"><%=rs.getString("lname")%>
</option>
<%}%>
</select>
</td>
</tr>
</table>
</form>
//The function:
public static ResultSet func(Connection dbc, String x)
{
ResultSet rs = null;
String sql;
PreparedStatement pst;
try
{
sql = "select lname from demo where label like '" + x + "'";
pst = dbc.prepareStatement(sql);
rs = pst.executeQuery();
}
catch (Exception e)
{
e.printStackTrace();
String sqlMessage = e.getMessage();
}
return rs;
}
我试图使这个例子尽可能详细。如果您有任何疑问,请询问。
【讨论】: