RSMetaData.java Source code

Java tutorial

Introduction

Here is the source code for RSMetaData.java

Source

import java.math.BigDecimal;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;

public class RSMetaData {
    public static void main(String[] args) throws Exception {
        String driver = "oracle.jdbc.driver.OracleDriver";
        Class.forName(driver).newInstance();

        String jdbcUrl = "jdbc:oracle:thin:@localhost:1521:ORCL";
        Connection conn = DriverManager.getConnection(jdbcUrl, "yourName", "mypwd");

        Statement stmt = conn.createStatement();
        ResultSet rs = stmt.executeQuery("SELECT * FROM Employees");

        printColumnInfo(rs);

        printColumnNames(rs);
        processRs(rs);

        rs = stmt.executeQuery("SELECT * FROM Location");
        printColumnInfo(rs);

        printColumnNames(rs);
        processRs(rs);
        conn.close();
    }

    public static void processRs(ResultSet rs) throws SQLException {
        ResultSetMetaData rmd = rs.getMetaData();
        while (rs.next()) {
            for (int col = 1; col <= rmd.getColumnCount(); col++)
                getData(rs, rmd.getColumnType(col), col);
        }
    }

    public static void printColumnNames(ResultSet rs) throws SQLException {
        ResultSetMetaData rmd = rs.getMetaData();
        for (int col = 1; col <= rmd.getColumnCount(); col++)
            System.out.println(rmd.getColumnName(col) + " ");
    }

    public static void getData(ResultSet rs, int type, int colIdx) throws SQLException {
        switch (type) {
        case java.sql.Types.CHAR:
        case java.sql.Types.VARCHAR:
            System.out.println(rs.getString(colIdx));
            break;

        case java.sql.Types.INTEGER:
            int i = rs.getInt(colIdx);
            System.out.println(i);
            break;

        case java.sql.Types.NUMERIC:
            BigDecimal bd = rs.getBigDecimal(colIdx);
            System.out.println(bd.toString());
            break;

        case java.sql.Types.TIMESTAMP:
        case java.sql.Types.DATE:
            java.sql.Date d = rs.getDate(colIdx);
            System.out.println(d.toString());
            break;

        }
    }

    public static void printColumnInfo(ResultSet rs) throws SQLException {
        ResultSetMetaData rsmd = rs.getMetaData();
        int cols = rsmd.getColumnCount();
        for (int colIdx = 1; colIdx <= cols; colIdx++) {
            String name = rsmd.getColumnName(colIdx);
            int type = rsmd.getColumnType(colIdx);
            String typeName = rsmd.getColumnTypeName(colIdx);
            System.out.println(name + ", " + type + ", " + typeName);
        }
    }
}