skip to main | skip to sidebar

Java Programs and Examples with Output

Pages

▼
 
  • RSS
  • Twitter
Wednesday, October 10, 2012

Meta Data Reader

Posted by Raju Gupta at 11:36 AM – 0 comments
 

The Code here takes a Table name as the String Parameter and Displays the Table's MetaData in two ways

Solution 1 : Through ResultSetMetaData (java.sql.ResultSetMetaData)
Solution 2 : Through DatabaseMetaDataSet (java.sql.DatabaseMetaData)

The Code snippet has comments for easy understanding and use. 

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

public class MetaDataReader1 {

 public static void main(String[] args) throws SQLException {
  System.out.println("Connecting..");
  Connection conn = null;
  String url = "jdbc:oracle:thin:@192.168.5.43:1521:userdb";
  String driver = "oracle.jdbc.OracleDriver";
  String userName = "rajdb";
  String password = "password";

  // Making Connection......
  try {
   Class.forName(driver).newInstance();
   conn = DriverManager.getConnection(url, userName, password);
  } catch (Exception e) {
   System.out.println("Error in Connection");
  }
  System.out.println("Connected to the database");

  System.out.println("***************Method 1*******************");
  
  /*** Method 1 ***/
  
  String query="";
  /* The Query String */
  if (args.length == 0) {
   query = "Select * from TABLE1";     // in case no parameters are passed some default value
  } else if (args.length ==1){
   query = "Select * from " + args[0];
  } else {
   System.out.println("Invalid parameters");
   System.exit(0);
  }
  
  
  Statement stmt = conn.createStatement();
  ResultSet rs = null;
  try {
   rs = stmt.executeQuery(query);
  } catch (Exception e) {
   System.out.println("Unable to Execute Query");
   System.exit(0);
  }
  ResultSetMetaData rsMd = rs.getMetaData();
  System.out.print("The Number of Columns in the Table -> ");
  System.out.println(rsMd.getColumnCount() + "\n");

  System.out.println("*************Table MetaData***************");
  for (int i = 1; i <= rsMd.getColumnCount(); i++) {
   System.out.print(rsMd.getColumnName(i) + "\t");  // Column Name
   System.out.print(rsMd.getColumnClassName(i) + "\t");  // Column Class Type
   System.out.print(rsMd.getColumnTypeName(i) + "\t");  // Column Type in DB
   System.out.print(rsMd.getPrecision(i) + "\t");   // Column Precision
   System.out.println(rsMd.getColumnDisplaySize(i) + "\t");  // Column Size
    
  }

  System.out.println("\n***************Method 2*******************");
  System.out.println("*************Table MetaData***************");
  /*** Method 2 ***/
  DatabaseMetaData dbm = conn.getMetaData();
  ResultSet rs1 = dbm.getColumns("rajdb", "%", "WI_CONTROL_TBL", "%");
  while (rs1.next()) {
   String col_name = rs1.getString("COLUMN_NAME"); // Column name
   String data_type = rs1.getString("TYPE_NAME"); // Column Type in DB
   int data_size = rs1.getInt("COLUMN_SIZE");  // Column Size
   int nullable = rs1.getInt("NULLABLE");  // Column is Nullable or Not
   System.out.print(col_name + "\t" + 
     data_type + "(" + 
     data_size + ")" + "\t");
   if (nullable == 1) {
    System.out.print("YES NULLABLE\t");
   } else {
    System.out.print("NOT NULLABLE\t");
   }
   System.out.println();
  }
  System.out.println("\n***************Table Data*****************");

  int rowNumber = 0;
  int totColumns = rs.getMetaData().getColumnCount();
  while (rs.next()) {                                                      // ROW Iterator
   rowNumber++;
   int colNumber = 1;
   for (int i = 0; i < totColumns; i++) {                                 // Column Iterator
    // Reading type of Column No. = colNumber
    String s = rs.getMetaData().getColumnClassName(colNumber);
    int j = 0;
    /*
     * For Example I have taken only 3 type of data ... For any
     * different type of Column Class name one needs to add to the
     * code here and print accordingly
     */
    // Reading type of the Column
    if (s.equalsIgnoreCase("java.lang.String")) {
     j = 1;   // java.lang.String
    } else if (s.equalsIgnoreCase("java.sql.Timestamp")) {
     j = 2;   // java.sql.Timestamp
    } else if (s.equalsIgnoreCase("java.math.BigDecimal")) {
     j = 3;   // java.math.BigDecimal
    }
    // Printing Output of the Column
    switch (j) {
    case 1:
     System.out.print(rs.getString(colNumber++) + "\t");
     break;
    case 2:
     System.out.print(rs.getDate(colNumber++) + "\t");
     break;
    case 3:
     System.out.println(rs.getLong(colNumber++) + "\t");
    }
   }
   System.out.println();
  }
  System.out.println("\n******************************************");
  System.out.println("Total Number of Rows - >" + rowNumber);

  

  System.out.println("******************************************");
  System.out.println("Disconnecting...");
  conn.close();
  System.out.println("Disconnected from database");
 }
}

Labels: JDBC

Leave a Reply

Newer Post Older Post
Subscribe to: Post Comments ( Atom )
  • Popular
  • Recent
  • Archives
Powered by Blogger.
 
 
 
© 2011 Java Programs and Examples with Output | Designs by Web2feel & Fab Themes

Bloggerized by DheTemplate.com - Main Blogger