example for using DatabaseMetaData and ResultSetMetaData
package coreservlet;
import java.io.*;
import java.sql.*;
import javax.servlet.*;
import javax.servlet.http.*;
/**
*
* @author DuYang
* @version
*/
public class NorthwindServlet extends HttpServlet {
/** Processes requests for both HTTP <code>GET</code> and <code>POST</code> methods.
* @param request servlet request
* @param response servlet response
*/
/** A simple servlet that connects to a database and presents the results from the query in an
* HTML table.Ther driver,URL,username,,passwrd, and query are taken from input prarmeters.
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html");
PrintWriter out=response.getWriter();
String docType=
"<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 "+
"Transitional//EN\"\n";
String title="Northwind Results";
out.println(docType+
"<HTML>\n"+
"<HEAD><TITLE>"+title+"</TITLE></HEAD>\n"+
"<BODY BGCOLOR=\"#FDF5E6\"><CENTER>\n"+
"<H1>Database Results</H1>\n");
String driver=request.getParameter("driver");
String url=request.getParameter("url");
String username=request.getParameter("username");
String password=request.getParameter("password");
String query=request.getParameter("query");
showTable(driver,url,username,password,query,out);
out.println("</CENTER></BODY></HTML>");
}
public void showTable(String driver,String url,
String username,String password,
String query,PrintWriter out)
{
try
{
//load database driver if it's not already loaded.
Class.forName(driver);
//Establish netword connection to database.
Connection connection=
DriverManager.getConnection(url,username,password);
//Look up info about the database as a whole.
DatabaseMetaData dbMetaData=connection.getMetaData();
out.println("<UL>");
String productName=
dbMetaData.getDatabaseProductName();
String productVersion=
dbMetaData.getDatabaseProductVersion();
out.println("<LI><B>Database:</B>"+productName+
"<LI><B>Version:</B>"+productVersion+"</UL>");
Statement statement=connection.createStatement();
//Send query to database and store queries.
ResultSet resultSet=statement.executeQuery(query);
//Print result.
ResutlSetMetaData resultSetMetaData=
resultSet.getMetaData();
int columCount=resultSetMetaData.getColumnCount();
out.println("<TR>");
//Column index statrs at 1(a la SQL), not 0(a la Java).
for(int i=1;i<columnCount;i++)
{
out.println("<TH>"+resultSetMetaDate.getColumnName(i));
}
out.println();
//Step through each row, retrieving the data in each
// column cell as String.
for(int i=1;i<columnCount;i++)
{
out.println("<TD>"+resultSet.getString(i));
}
out.println();
}
out.println("</TABLE>");
connection.close();
}
catch(ClassNotFoundException e)
{
System.err.println("Error loading driver:"+e);
}
catch(SQLException e1)
{
System.err.println("Error connecting:"+e1);
}
catch(Exception ee)
{
System.err.println("Error with input:"+ee);
}
}
private static void showResults(ResultSet results)throws SQLException
{
while(results.next())
{
System.out.println(results.getString(1)+"");
}
System.out.println("");
}
public static void printUsage()
{
System.out.println("Usage:PreparedStatements host"+"dbName username password"+
"vendow [print].");
}
}
NorthwindForm.htm
Query Input: