J'essaie de récupérer des données de la base de données dans la table. Mais les données doivent être chargées dynamiquement.
Comment créer dynamiquement des lignes et des colonnes que je ne connais pas? Si ce ne sont que des lignes à créer, je le ferai facilement, mais je veux aussi créer une colonne de manière dynamique sur la page, c’est pourquoi je suis confus. le faire?
Mon code 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>
En ce moment, la première colonne est affichée dans <td>
, mais si l'utilisateur ne sait pas combien de colonnes seront récupérées, que faire? Dans select query
, j'ai utilisé *
, donc je suis confus de prendre <td>
. Je veux tout dynamique car supposons que je transmette aussi le nom de la table de manière dynamique en utilisant n'importe quelle zone de texte ou url.
Ici MySql
1 est un fichier de classe qui a une méthode pour effectuer l'opération. connect()
est utilisé pour se connecter à db, et getdata()
est utilisé pour récupérer les données de la requête passée en argument et le type de retour de la méthode getdata()
est Resultset
.
C'est pourquoi je veux tout être dynamique, mais je ne sais pas comment faire ça.
essayez ce code:
<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>
J'ai fait la page JSP pour tester comme ça
ici c'est 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>
vous pouvez changer le scriptlet en code qui parcourt le modèle que vous voulez afficher
j'espère que cela t'aides