データベースからテーブルにデータを取得しようとしています。ただし、データは動的にロードする必要があります。
わからない行と列を動的に作成する方法は?作成するのが行だけの場合は簡単に作成できますが、ページ上で動的に列を作成したいので、実行方法がわかりません。
私の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>
_を取得することに混乱しています。テキストボックスまたはURLを使用してテーブル名も動的に渡すと仮定するため、すべて動的にしたい。
ここで、MySql
1は、操作を実行するメソッドを持つ1つのクラスファイルです。 connect()
はdbとの接続に使用され、getdata()
は引数として渡されたクエリのデータを取得するために使用され、getdata()
の戻り値の型はResultset
です。
だから私はすべてダイナミックにしたいのですが、それを行う方法がわかりません。
このコードを試してください:
<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>
私はこのようなテストのために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>
スクリプトレットを、表示するモデルを反復処理するコードに変更できます
お役に立てれば