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, null, null, new String[]{"table"});//表示的是type的类型是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>");
结果就是为什么我获得的rs总是为空,我的数据库里是有table的,可是为什么总是显示“table列表为空”
还请帮忙帮忙,谢谢
[b]问题补充:[/b]
首先,大写是我第一次就是大写的,我就是要取得所有表的,所以说第三个是null
我把代码写在下面把
import java.io.*;
import java.sql.*;
import javax.servlet.http.*;
import javax.servlet.*;
import java.util.*;
/*
-
*/
public class GetdatametaServlet2 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, null, null, new String[]{"TABLE"});//表示的是type的类型是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; } }
}
}
[b]问题补充:[/b]
如果是不是我的url里没有指定数据库的话,就是为空了,总算找到原因了。
继续学习中。。。。。。