DbMetaServlet.java Source code

Java tutorial

Introduction

Here is the source code for DbMetaServlet.java

Source

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;

import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.sql.DataSource;

public class DbMetaServlet extends HttpServlet {

    DataSource pool;

    public void init() throws ServletException {

        Context env = null;

        try {

            env = (Context) new InitialContext().lookup("java:comp/env");

            pool = (DataSource) env.lookup("jdbc/oracle-8i-athletes");

            if (pool == null)
                throw new ServletException("'oracle-8i-athletes' is an unknown DataSource");

        } catch (NamingException ne) {

            throw new ServletException(ne);

        }
    }

    public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, java.io.IOException {

        String sql = "select * from aTable";
        Connection conn = null;
        Statement stmt = null;
        ResultSet rs = null;
        ResultSetMetaData rsm = null;

        response.setContentType("text/html");
        java.io.PrintWriter out = response.getWriter();
        out.println("<html><head><title>Discover a ResultSet</title></head><body>");
        out.println("<h2>Here is Info about the returned ResultSet</h2>");
        out.println("<table border='1'><tr>");

        try {

            //Get a connection from the pool
            conn = pool.getConnection();

            //Create a Statement with which to run some SQL
            stmt = conn.createStatement();

            //Execute the SQL
            rs = stmt.executeQuery(sql);

            //Get a ResultSetMetaData object from the ResultSet
            rsm = rs.getMetaData();

            int colCount = rsm.getColumnCount();

            //print column names
            printMeta(rsm, "name", out, colCount);

            //print column index
            printMeta(rsm, "index", out, colCount);

            //print column type
            printMeta(rsm, "column type", out, colCount);

            //print column display size
            printMeta(rsm, "column display", out, colCount);

        } catch (Exception e) {

            throw new ServletException(e.getMessage());

        } finally {

            try {

                stmt.close();
                conn.close();

            } catch (SQLException sqle) {
            }

        }
        out.println("</table></body></html>");
        out.close();

    } //doGet

    private void printMeta(ResultSetMetaData metaData, String type, java.io.PrintWriter out, int colCount)
            throws SQLException {

        if (metaData == null || type == null || out == null)
            throw new IllegalArgumentException("Illegal args passed to printMeta()");

        out.println("<tr>");

        if (type.equals("table")) {

            out.println("<td><strong>Table name</strong></td>");

            for (int i = 1; i <= colCount; ++i) {

                out.println("<td>" + metaData.getTableName(i) + "</td>");
            }

        } else if (type.equals("name")) {

            out.println("<td><strong>Column name</strong></td>");

            for (int i = 1; i <= colCount; ++i) {

                out.println("<td>" + metaData.getColumnName(i) + "</td>");
            }

        } else if (type.equals("index")) {

            out.println("<td><strong>Column index</strong></td>");

            for (int i = 1; i <= colCount; ++i) {

                out.println("<td>" + i + "</td>");
            }

        } else if (type.equals("column type")) {

            out.println("<td><strong>Column type</strong></td>");

            for (int i = 1; i <= colCount; ++i) {

                out.println("<td>" + metaData.getColumnTypeName(i) + "</td>");
            }

        } else if (type.equals("column display")) {

            out.println("<td><strong>Column display size</strong></td>");

            for (int i = 1; i <= colCount; ++i) {

                out.println("<td>" + metaData.getColumnDisplaySize(i) + "</td>");
            }
        }

        out.println("</tr>");

    }//printMeta

}