rs = dbMeta.getTables(null, null, null, new String[]{"TABLE"});//表示的是type的类型是table类型
      out.println("<form action=\"getdameta\" method= \"get\">");
      out.println("<select size=1 name=tablename>");
      while(rs.next()){
      out.println("<option value="+rs.getString("TABLE_NAME"));
      out.println(rs.getString("TABLE_NAME"));
      out.println("</option>");
      }
      out.println("</select><p>");
      out.println("<input type=\"submit\" value=\"提交\">");
      out.println("</form>");
                          out.println("</body></html>");
               out.close();首先程序是没有错误的,我可以在tomcat上看到,但是却没有我得到的表名只是这样的(这里好像不能发图片啊)反正出来的页面是
<html><head> 
<title>数据库信息</title> 
</head><body> 
<form action="getdameta" method= "get"> 
<select size=1 name=tablename> 
//这里没有tablename的名称啊,这里是空的
//
</select><p> 
<input type="submit" value="提交"> 
</form> 
</body></html> 
希望有人告诉一下原因

解决方案 »

  1.   

    但是我的数据库里有 table啊
      

  2.   

    改成这样看看
    // 获取所有表
    ResultSet tableSet = databaseMetaData.getTables(null, "%", "%",
    new String[] { "TABLE" });
      

  3.   

    还是为空,我把代码全复制下来import java.io.*;
    import java.sql.*;import javax.servlet.http.*;
    import javax.servlet.*;
    import java.util.*;/*
     * 
     */
    public class GetdatametaServlet extends HttpServlet {
         private String url;
         private String user;
         private String password;
         
         public void init()throws ServletException{
          ServletContext sc = getServletContext();
          String driverClass = sc.getInitParameter("driverClass");
          url = sc.getInitParameter("url");
          user = sc.getInitParameter("user");
          password = sc.getInitParameter("password");
          
          try{
          Class.forName(driverClass);      
          }
          catch(ClassNotFoundException ce ){
          throw new ServletException("加载数据库失败");
          }
         }
         public void doGet(HttpServletRequest request,HttpServletResponse response)
         throws ServletException,IOException{
          Connection conn = null;
          Statement stmt = null;
          ResultSet rs = null;
          
          try{
          conn = DriverManager.getConnection(url, user, password);
          response.setContentType("text/html;charset=gb2312");
          PrintWriter out = response.getWriter();
          
          out.println("<html><head>");
          out.println("<title>数据库信息</title>");
          out.println("</head><body>");
          
          String tablename = request.getParameter("tablename");
          if(null==tablename || tablename.equals("")){
           stmt = conn.createStatement();
           
          stmt.executeUpdate("use test");
          DatabaseMetaData dbMeta = conn.getMetaData();
            
           rs = dbMeta.getTables(null, "%", "%", new String[] { "TABLE" });
          if(!rs.next()){
             out.println("table列表为空");
             out.close();
           }
           
          out.println("<form action=\"getdameta\" method= \"get\">");
          out.println("<select size=1 name=tablename>");
          while(rs.next()){
          out.println("<option value="+rs.getString("TABLE_NAME")+">");
          out.println(rs.getString("TABLE_NAME"));
          out.println("</option>");
          }
          out.println("</select><p>");
          out.println("<input type=\"submit\" value=\"提交\">");
          out.println("</form>");
          }  
          else{
          stmt = conn.createStatement();
          stmt.executeUpdate("use bookstore");
          rs = stmt.executeQuery("select * from " +tablename);
          ResultSetMetaData rsMeta = rs.getMetaData();
          int columnCount = rsMeta.getColumnCount();
          out.println("<table border=1>");
          out.println("<caption>表的结构</caption>");
          out.println("<tr><th>字段名</th><th>字段类型</th><th>最大字符宽度</th></tr>");
          
          ArrayList<String> al = new ArrayList<String>();//创建了一个列表
          for(int i =1;i<=columnCount;i++){
          out.println("<tr>");
          String columnname = rsMeta.getColumnName(i);
          out.println("<td>"+columnname+"</td>");
          al.add(columnname);
          out.println("<td>"+rsMeta.getColumnTypeName(i)+"</td>");
          out.println("<td>"+rsMeta.getColumnDisplaySize(i)+"</td>");
          
          }
          out.println("</table><p>");
          out.println("<table border=1>");
          out.println("<caption>表中的数据</caption>");
          out.println("<tr>");
          
          for(int i=0;i<columnCount;i++){
          out.println("<th>"+al.get(i)+"</th>");
          }
          while(rs.next()){
          out.println("<tr>");
          for(int i=1;i<=columnCount;i++){
          out.println("<td>"+rs.getString(i)+"</td>");
          }
          out.println("<tr>");
          }
          out.println("</table>");
          }
          out.println("</body></html>");
          out.close();
          }
          catch(SQLException se){
          se.printStackTrace();
          }
          finally{
              if(rs!=null){
           try{
           rs.close();
           }
           catch(SQLException se){
           se.printStackTrace();
           }
           rs = null;
           }
           if(stmt!=null){
           try{
           stmt.close();
           }
           catch(SQLException se){
           se.printStackTrace();
           }
           stmt=null;
           }
           if(conn!=null){
           try{
           conn.close();
           }
           catch(SQLException se){
           se.printStackTrace();
           }
           conn = null;
           }
          }     
         }
    }
      

  4.   

    mysql的,我用的就是root的,别的还没有权限,
      

  5.   

    我知道了,我的url里没有明确指出是那个数据库,所以说出现问题了,应该这样写 url = sc.getInitParameter("url")+“/××××”; ××××是我的数据库的名字