你可以用resultset的metadata来得到列名,列数,这样就能控制输出了

解决方案 »

  1.   

    java.sql.ResultSet rs=stmt.executeQuery(sql);
            java.sql.ResultSetMetaData rsmd=rs.getMetaData();
            int count=rsmd.getColumnCount();
            out.print("<tr class='color-gridheader'>");
            for(int i=1;i<=count;i++){
                out.println("<td align='center' nowrap>"+rsmd.getColumnName(i)+"</td>");
            }
            out.println("</tr>");
            int rows=0;
            String td_style="#D3DDB6";
            String active_color="#FFFFEE";
            while(rs.next()){
                rows++;
                out.print("<tr onmouseout=\"chgBgColor('"+td_style+"',this)\" onmouseover=\"chgBgColor('"+active_color+"',this)\" bgcolor='"+td_style+"'>");
                for(int i=1;i<=count;i++){
                    out.println("<td nowrap>"+rs.getString(rsmd.getColumnName(i))+"</td>");
                }
                out.println("</tr>");
                td_style=(rows%2==0)?"#D3DDB6":"#E1E8C8";
            }
            out.println("<tr class='color-buttonbacking'><td colspan='"+count+"'>Total:"+rows+"</td></tr>");
      

  2.   

    ResultSetMetaData中可以得到你要的东西
      

  3.   

    上面3位楼主说的对ResultSetMetaData可以得到你要的东西
      

  4.   

    chancelin() ( ) 信誉:100 
    的回答好经典.
    不过这里的类:class='color-gridheader'是你自己写的吗?能不能把整个页面贴出来看看?
      

  5.   

    to : chancelin()
    我是初学,能不能结合select * from table;
    把代码写完?谢了。
      

  6.   

    把java.sql.ResultSet rs=stmt.executeQuery(sql);中的sql改为你的sql就行了
      

  7.   

    先编个专门调用数据库的bean:
    package DBconn;
    import java.sql.*;
    public class DBconn {
      String DBDriver = "sun.jdbc.odbc.JdbcOdbcDriver";
      String ConnStr = "jdbc:odbc:Customer";
      Connection conn = null;
      ResultSet rs = null;
      public DBconn() {
        try {
          Class.forName(DBDriver);    }
        catch (java.lang.ClassNotFoundException e) {
          System.err.println("DBconn (): " + e.getMessage());
        }
      }  public ResultSet executeQuery(String sql) {/*这是有返回值的,用来查询的方法*/
        rs = null;
        try {
          conn = DriverManager.getConnection(ConnStr);
          Statement stmt = conn.createStatement();
          rs = stmt.executeQuery(sql);
        }
        catch (SQLException ex) {
          System.err.println("aq.executeQuery: " + ex.getMessage());
        }
        return rs;
      }
      public void updateQuery(String sql) {/*这是没有返回值的用来修改,删除的方法*/
          try {
          conn = DriverManager.getConnection(ConnStr);
          Statement stmt = conn.createStatement();
          stmt.executeUpdate(sql);
          conn.commit();
        }
        catch (SQLException ex) {
          System.err.println("aq.executeQuery: " + ex.getMessage());
        }
      }
    }接下来就是在jsp中调用这个bean了:
    ......
    <BODY>
    <jsp:useBean id="DBconn1" scope="page" class="work.DBconn"/>
    <%--其中DBconn1是个随意起的名字,后面调用方法的时候会用到 work.DBconn是刚才bean的class所在的目录。
    好了,现在可以调用你的数据库啦:) --%>
    <%
    先建立好接收数据库的变量:比如说你的数据库只有两个属性值:Id和Name
    String getId;
    String getName;
    ResultSet rs = DBconn1.executeQuery("SELECT * FROM table");
    while(rS.next()){
          getId = rS.getString("Id");
          getName = rS.getString("Name");
          out.print(getId);
          out.print(getName);
    }
    %>
    </BODY>
    ......
    这样应该就可以显示出来了。
      

  8.   

    <%@page contentType="text/html;charset=gb2312"%> 
    <% java.sql.Connection sqlConn; 
    java.sql.Statement sqlStmt; 
    java.sql.ResultSet sqlRst; 
    //regiester jdbc driver 
    Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance(); 
    //connect to the database 
    sqlConn=java.sql.DriverManager.getConnection("jdbc:microsoft:sqlserver://IP:1433;DatabaseName=datebase;SelectMethod=direct","sa","pswd"); 
    //create the driver handle 
    sqlStmt=sqlConn.createStatement(java.sql.ResultSet.TYPE_SCROLL_INSENSITIVE,java.sql.ResultSet.CONCUR_READ_ONLY); 
    //excute sql sqlRst=sqlStmt.executeQuery("select top 10 * from tb_createid"); 
    %> 
    <html> 
    <head> 
    <title>test jdbc driver</title> 
    </head> 
    <body> 
    <table border="1" cellspace ="0" align="center"> 
    <tr> 
    <th>title </th> 1
    <th>type </th> 
    <th>3</th>
    </tr> 
    <% while(sqlRst.next()) {%> 
    <tr> 
    <td> <%=sqlRst.getString(1)%></td> 
    <td><%=sqlRst.getString(3)%></td> 
    <td> <%=sqlRst.getString(2)%></td>
    </tr> 
    <%}%> 
    </table> 
    </body> 
    </html> 
    <% 
    sqlRst.close(); 
    sqlStmt.close(); 
    sqlConn.close(); 
    %> 
      

  9.   

    to:fantasygg
    我对 javabean  这个不熟,也不知道怎么调用,你能不能把另个页面也写出来?
    还有就是,事先并不知道数据库里有两个属性值:Id和Name
    可能有3个,也可能有4个
    所以肯定是用到for  和  while  的
      

  10.   

    不用Bean的话就要把代码全部写到Jsp上,比较长,两个变量和3,4个变量不是一样么。就是多加几行代码罢了
    以下这个Jsp代码是个例子,我也是拷贝过来的,自己好好看看,有注释的。<html>
       <head><title>Add User to DB</title></head>
       <%@page import="java.sql.*"%>
    <body>
       <pre>
    <%
    //Get parameters from request
    String name,pwd;
    name=request.getParameter("name");
    pwd=request.getParameter("pwd");
      try{
    //add infomation to DB
    Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");       
      Connection con=DriverManager.getConnection("jdbc:odbc:jspTest");
    Statement stmt=con.createStatement();
    stmt.executeUpdate("insert into table values('"+name+"','"+pwd+"')");

    //query DB for display all users
    ResultSet rs=stmt.executeQuery("select * from table");
    //rs.first();
    out.println("All user in DB!"); 
    while(rs.next()){
    out.print("user name: ");
    out.print(rs.getString("name")+"      password: ");
    out.println(rs.getString("password"));
    }

    //clear,must do it
    rs.close();
    stmt.close();
    con.close();

       }catch(Exception ex){
        out.println(ex.getMessage());
       }
    %>
       </pre>
    </body>
    </html>
      

  11.   

    to:fantasygg(红尘一步) 
    谢谢你的代码,不过我还是想问你一下fantasygg(红尘一步)
    如果我给你一个表,表名是table
    请用表格的方式显示出来,怎么做?
    如果你做得,那就是我所需要的了。
      

  12.   

    哎,还是自己搞掂了,大家也参考一下吧,很有用的
    try  {
    Class.forName("oracle.jdbc.driver.OracleDriver"); 
    Connection conn= DriverManager.getConnection("jdbc:oracle:thin:@16.107.1.254:1521:oradb","system","manager");
        Statement stmt = conn.createStatement ();
    String sql = "select * from t00033";
    java.sql.ResultSet rs=stmt.executeQuery(sql);
            java.sql.ResultSetMetaData rsmd=rs.getMetaData();
            int count=rsmd.getColumnCount();
    %>
           <table border="1">
    <tr>
    <%
            for(int i=1;i<=count;i++){   %>
                <td><%=rsmd.getColumnName(i)%></td>
          <% }  %>
            </tr>
    <%
            int rows=0;
            while(rs.next()){
                rows++;   %>
                <tr>
    <%
                for(int j=1;j<=count;j++){  %>
                   <td><%=rs.getString(rsmd.getColumnName(j))%></td>
    <%
    }
    }  %>
                </tr>
    </table>
         <%          
    }
    catch(SQLException e)  {
    out.print(e.getMessage());
    }
    %>