我需要使用 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
**** 在我的代码中,下拉列表包含数据库中的许多 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