我有一段源代码如下:
<%@ page contentType="text/html;charset=gb2312" language="java" import="java.sql.*" errorPage="" %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html";charset=gb2312">
<title>JSP连接数据库</title>
</head>
<body>
<%
String sql=request.getParameter("sqlid");
String mySqlDriver = "org.gjt.mm.mysql.Driver";
String url = "jdbc:mysql://localhost/mydatabase";
Connection conn;
Class.forName(mySqlDriver).newInstance();
conn = DriverManager.getConnection(url,"root","34497267");
if(conn==null){
System.out.println("get Conn Error");
}
Statement stmt=conn.createStatement();
ResultSet rs=null;
rs=stmt.executeQuery(sql);
while(rs.next())
{
String s1=rs.getString(1);
String s2=rs.getString(2);
String s3=rs.getString(3);
out.println(s1+" | "+s2+" | "+s3+"<br>");
}
rs.close();
stmt.close();
conn.close();
%>
</body>
</html>
现在的问题是,我只要改变sqlid传进来的SQL语句(基本针对任何SQL语句),那么这个页面执行的结果能把查到的数据以表格的形式显示出来,不管我的SQL语句是怎么样的,不管数据库中的数据有多少个属性,我只要能最后在页面上正确显示我查的数据的表格显示。我觉的主要是这段的问题:
while(rs.next())
{
String s1=rs.getString(1);
String s2=rs.getString(2);
String s3=rs.getString(3);
out.println(s1+" | "+s2+" | "+s3+"<br>");
}
不知道怎么改好,哪位大哥有清楚的?告诉我谢谢!
<%@ page contentType="text/html;charset=gb2312" language="java" import="java.sql.*" errorPage="" %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html";charset=gb2312">
<title>JSP连接数据库</title>
</head>
<body>
<%
String sql=request.getParameter("sqlid");
String mySqlDriver = "org.gjt.mm.mysql.Driver";
String url = "jdbc:mysql://localhost/mydatabase";
Connection conn;
Class.forName(mySqlDriver).newInstance();
conn = DriverManager.getConnection(url,"root","34497267");
if(conn==null){
System.out.println("get Conn Error");
}
Statement stmt=conn.createStatement();
ResultSet rs=null;
rs=stmt.executeQuery(sql);
while(rs.next())
{
String s1=rs.getString(1);
String s2=rs.getString(2);
String s3=rs.getString(3);
out.println(s1+" | "+s2+" | "+s3+"<br>");
}
rs.close();
stmt.close();
conn.close();
%>
</body>
</html>
现在的问题是,我只要改变sqlid传进来的SQL语句(基本针对任何SQL语句),那么这个页面执行的结果能把查到的数据以表格的形式显示出来,不管我的SQL语句是怎么样的,不管数据库中的数据有多少个属性,我只要能最后在页面上正确显示我查的数据的表格显示。我觉的主要是这段的问题:
while(rs.next())
{
String s1=rs.getString(1);
String s2=rs.getString(2);
String s3=rs.getString(3);
out.println(s1+" | "+s2+" | "+s3+"<br>");
}
不知道怎么改好,哪位大哥有清楚的?告诉我谢谢!
test.jsp<%@ page contentType="text/html;charset=utf-8"%><html>
<head>
<title>Test page</title>
</head>
<body>
<table border="1">
<%
for (int i = 0; i < 10; i++) {
String s1 = i + "a";
String s2 = i + "b";
String s3 = i + "c";
%>
<tr>
<td><%=s1%></td>
<td><%=s2%></td>
<td><%=s3%></td>
</tr>
<%
}
%>
</table>
</body>
</html>
<tr>
<td>编号</td>
<td>用户名</td>
<td>文章名</td>
<td>内容</td>
<td>删除</td>
</tr>
<%
LiuYanming id = new LiuYanImpl();
List<LiuYan> list = id.selectAll();
Iterator it=list.iterator();
while(it.hasNext()){
LiuYan liuyans = (LiuYan)it.next();
%>
<tr>
<td><%=liuyans.getId() %></td>
<td><%=liuyans.getUsername()%></td>
<td><%=liuyans.getLname()%></td>
<td><%=liuyans.getLtextarea()%></td>
<td><a href="delete.do?id=<%=liuyans.getId()%>">删除</a></td>
</tr>
<%}%>
</table>
就要这样写呀:<html>
<head>
<title> Test page </title>
</head>
<body>
<table border="1">
<%
while(rs.next())
{
String s1=rs.getString(1);
String s2=rs.getString(2);
String s3=rs.getString(3);
out.println(s1+" ¦ "+s2+" ¦ "+s3+" <br> ");
%>
<tr>
<td> <%=s1%> </td>
<td> <%=s2%> </td>
<td> <%=s3%> </td>
</tr><%
}
rs.close();
stmt.close();
conn.close();
%>
</table>
</body>
</html>你自己试试吧,祝你好运哦...
我看了下你们的 终于有了想法:
rs=stmt.executeQuery(sql);
ResultSetMetaData rsmd = rs.getMetaData();
int numberOfColumns = rsmd.getColumnCount();
%>
<center>
<%
out.println("数据库为:"+rsmd.getCatalogName(1));
%>
<table border>
<tr align=left>
<%
for(int i=1;i<numberOfColumns+1;i++){
%>
<th align=left><%=rsmd.getColumnName(i)%></th>
<br>
<%
}
%>
</tr>
<%
while(rs.next())
{
%>
<tr align=left>
<%
for(int i=1;i<numberOfColumns+1;i++){
%>
<td align=left><%=rs.getString(i)%></td>
<%
}
%>
</tr>
<%
}
%>
<%
rs.close();