我正在尝试从数据库中检索数据到表中。 但是数据必须动态加载。
如何动态创建行和列我不知道? 如果它只是要创建的行,那么我会轻松地完成它,但我也想在页面上动态创建列,这就是为什么我很困惑如何执行它?
我的JSP代码:
<table width="59%" border="1">
<%
MySql1 o = new MySql1();
o.connect();
ResultSet r;
int counter=1;
String q = "select * from category_master;";
r = o.getdata(q);
while(r.next())
{
%>
<tr>
<td><%= r.getString(1)%></td>
</tr>
<%
}
%>
</table>
现在我正在显示<td>
中的第一列,但如果用户不知道要检索多少列,那该怎么办?
在select query
中,我使用了*
,因此我对于<td>
感到困惑。
我想要动态,因为我假设我也会使用任何文本框或网址动态传递表名。
此处MySql
1是一个具有执行操作的方法的类文件。
connect()
用于连接db,getdata()
用于检索作为参数传递的查询数据,getdata()
方法的返回类型为Resultset
。
这就是为什么我想要所有动态,但我不知道该怎么做。
答案 0 :(得分:7)
试试这段代码:
<table width="59%" border="1">
<%
MySql1 o = new MySql1();
o.connect();
ResultSet r;
int counter=1;
String q = "select * from category_master;";
r = o.getdata(q);
ResultSetMetaData metaData = r.getMetaData();
while(r.next())
{
%>
<tr>
<%
for(int i = 1; i<=metaData.getColumnCount();i++)
{ %>
<td>
<%= r.getString(i)%>
</td>
<%
}
%>
</tr>
<%
}
%>
</table>
答案 1 :(得分:0)
我做了像这样的测试的jsp页面
这里是test.jsp
<table width="59%" border="1">
<thead>
<tr>
<td>Volume</td>
<td>XmlTitle</td>
<td>getYear</td>
</tr>
</thead>
<tbody>
<%
Journal journal = Journal.findByCode("antipoda");
List<Issue> normalIssues = journal.getIssuesOfType(IssueType.NORMAL);
for (Issue issue : normalIssues) {
out.print(String.format("<tr>" +
"<td>%s</td>" +
"<td>%s</td>" +
"<td>%d</td>" +
"</tr>",
issue.getVolume(),issue.getXmlTitle(),issue.getYear()));
}
out.flush();
%>
</tbody>
</table>
您可以将scriptlet更改为通过要显示的模型进行迭代的代码
希望这会有所帮助