我需要读取数据库中名为bookstore中所有表 将表名显示在一个下拉框中,现在页面上下拉框中无任何表名显示 package org.sunxin.ch04.servlet; import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement; import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; public class GetDBInfoServlet 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 e) {
// TODO 自动生成 catch 块
throw new ServletException("数据库加载失败!");
}
} public void doGet(HttpServletRequest req,HttpServletResponse resp)throws ServletException,IOException{
Connection conn=null;
Statement stmt=null;
ResultSet rs=null;
try {
conn=DriverManager.getConnection(url,user,password);
resp.setContentType("text/html;charset=gb2312");
PrintWriter out=resp.getWriter();
out.println(" <html> <head>");
out.println(" <title>数据库表的信息 </title>");
out.println(" </head> <body>");
String tableName=req.getParameter("tableName");
//stmt=conn.createStatement();
//stmt.executeUpdate("use bookstore");这两句是我自己想的,不知道对不对? if(tableName==null||tableName.equals("")){
DatabaseMetaData dbMeta=conn.getMetaData();
rs=dbMeta.getTables(null, null, null, new String[]{"TABLE"});
out.println(" <form action=\"getdbinfo\" 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();
}
} catch (SQLException e) {
// TODO 自动生成 catch 块
e.printStackTrace();
}finally{
if(rs!=null){
try {
rs.close();
} catch (SQLException e) {
// TODO 自动生成 catch 块
e.printStackTrace();
}
rs=null; }
if(stmt!=null){
try {
stmt.close();
} catch (SQLException e) {
// TODO 自动生成 catch 块
e.printStackTrace();
}
stmt=null;
}
if(conn!=null){
try {
conn.close();
} catch (SQLException e) {
// TODO 自动生成 catch 块
e.printStackTrace();
}
conn=null;
}
} }
}
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement; import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; public class GetDBInfoServlet 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 e) {
// TODO 自动生成 catch 块
throw new ServletException("数据库加载失败!");
}
} public void doGet(HttpServletRequest req,HttpServletResponse resp)throws ServletException,IOException{
Connection conn=null;
Statement stmt=null;
ResultSet rs=null;
try {
conn=DriverManager.getConnection(url,user,password);
resp.setContentType("text/html;charset=gb2312");
PrintWriter out=resp.getWriter();
out.println(" <html> <head>");
out.println(" <title>数据库表的信息 </title>");
out.println(" </head> <body>");
String tableName=req.getParameter("tableName");
//stmt=conn.createStatement();
//stmt.executeUpdate("use bookstore");这两句是我自己想的,不知道对不对? if(tableName==null||tableName.equals("")){
DatabaseMetaData dbMeta=conn.getMetaData();
rs=dbMeta.getTables(null, null, null, new String[]{"TABLE"});
out.println(" <form action=\"getdbinfo\" 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();
}
} catch (SQLException e) {
// TODO 自动生成 catch 块
e.printStackTrace();
}finally{
if(rs!=null){
try {
rs.close();
} catch (SQLException e) {
// TODO 自动生成 catch 块
e.printStackTrace();
}
rs=null; }
if(stmt!=null){
try {
stmt.close();
} catch (SQLException e) {
// TODO 自动生成 catch 块
e.printStackTrace();
}
stmt=null;
}
if(conn!=null){
try {
conn.close();
} catch (SQLException e) {
// TODO 自动生成 catch 块
e.printStackTrace();
}
conn=null;
}
} }
}
用单引号