我需要使用 jsp 和 AJAX 显示下拉列表中选定的 table,以及它们各自的列名和字段数

i need to display the selected table from the dropdown, with their respective column names and number of fields using jsp and AJAX

**** 在我的代码中,下拉列表包含数据库中的许多 tables 名称。每个 table 列名称和列数都与其他 table 不同。如果我 select 下拉列表中的任何 table 名称,它应该显示整个 table 及其各自的列名和字段数 ****

// 在我的第一个 jsp 文件中

function showCustomer(str)
{
var xmlhttp;    
if (str=="")
  {
  document.getElementById("txtHint").innerHTML="";
  return;
  }
if (window.XMLHttpRequest)
  {// code for IE7+, Firefox, Chrome, Opera, Safari
  xmlhttp=new XMLHttpRequest();
  }
else
  {// code for IE6, IE5
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
xmlhttp.onreadystatechange=function()
  {
  if (xmlhttp.readyState==4 && xmlhttp.status==200)
    {
    document.getElementById("txtHint").innerHTML=xmlhttp.responseText;
    }
  }
xmlhttp.open("GET","report3.jsp?ID="+str,true);
xmlhttp.send();
}

REPORT:  <select name="ID" onchange="showCustomer(this.value)">

                <option value="infoo">INFOO</option>
                <option value="attendence">ATTENDENCE</option>
                <option value="customerdetail">CUSTOMERDETAIL</option>
                <option value="billingdetail">BILLINGDETAIL</option>

            </select><br/>
            <br/>
          </font><div id="txtHint"></div>

// in the next file report3.jsp

String ID=request.getParameter("ID");
ResultSet rs=st.executeQuery("SELECT * FROM "+ ID +"");

%>

<table border="1" bordercolor="#2494b7">
<tr>
<th></th>

<th></th>

<th></th>

<th></th>

<th></th>

</tr>
<%
while(rs.next())
{
    %>

<tr>
<td><%=rs.getString(1)%></td>

<td><%=rs.getString(2)%></td>

<td><%=rs.getString(3)%></td>
<td><%=rs.getString(4)%></td>
<td><%=rs.getString(5)%></td>
<tr/>

<%

}
%>

</table>

如果你想要你的table的fields/row各自的列名和数量,你可以使用ResultSetMetaData

 String s = rsmd.getColumnLabel(int column);
 //Gets the designated column's suggested title for use in printouts and displays.

 String s = rsmd.getColumnName(int column);
 // Get the designated column's name.

header 像这样使用,行也一样:

已编辑未测试

<%

ResultSet rs=st.executeQuery("SELECT * FROM "+ ID +"");
ResultSetMetaData rsmd = rs.getMetaData();


  int cnt = rsmd.getColumnCount()
  for(int i =1;i<=cnt;i++){
  %>
   <th><%=rsmd.getColumnLabel(1)%></th>
  <%
   }
   while(rs.next()){
   for(int i =1;i<=cnt;i++){
      String type = rsmd.getColumnTypeName(i);
      if(type.equals("String")|| type.equals("string")){
   %> 
     <td><%=rs.getString(i)%></td>
   <%
    }else{   // or countinue else if (check for other data types based on your database)
   %>
        <td><%=rs.getInt(i)%></td> 
   <%
    }
   } 
  }
  %>

可能你明白了。

http://docs.oracle.com/javase/7/docs/api/java/sql/ResultSetMetaData.html