Getting Columns Names using Servlets

Consider a situation where there is a need to know about the name of the columns without touching our database.

Getting Columns Names using Servlets

Getting Columns Names using Servlets

     

Consider a situation where there is a need to know about the name of the columns without touching our database. As we are the programmers so why we need to worry about the database. We want to do the manipulation by sitting on our computer through our program without going into the database. 

In this example we are going to exactly the same as we said above. To make this possible we need to make a class named ServletGettingColumnsNames,  the name of the program should be such that if in future there is any need to make any change in the program, you can easily understand in which program you have to make a change. Now inside the doGet() method use the getWriter() method of the response object and its returns the PrintWriter object, which helps us to write on the browser. To get a column names from the database there is a need for the connection between the database and the java program.  After the establishment of the connection with the database pass a query for retrieving all the records from the database and this will return the PreparedStatement object. To get the column names from the database we firstly need a reference of ResultSetMetaData object and we will get it only when if we have the ResultSet object. To get the object of the ResultSet we will call the method executeQuery() of the PreparedStatement interface. Now we have the object of the ResultSet. By the help of the ResultSet we can get the object of ResultSetMetaData. We will get it by calling the method getMetaData() of the ResultSet interface. The names of the columns will be retrieved  by the method getColumnsNames() of the ResultSetMetaData interface. The output will be displayed to you by the PrintWriter object.

The code of the program is given below: 

import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.sql.*;

public class ServletGettingColumnsNames extends HttpServlet{
  public void doGet(HttpServletRequest request, HttpServletResponse 
  response
)throws  ServletException, IOException{
  response.setContentType("text/html");
  PrintWriter pw = response.getWriter();
  String connectionURL = "jdbc:mysql://localhost/zulfiqar";
  Connection connection=null;
  try{
  Class.forName("org.gjt.mm.mysql.Driver");
  connection = DriverManager.getConnection(connectionURL, "root",
    
"admin");
  PreparedStatement pst = connection.prepareStatement("select * 
  from emp_details"
);
  ResultSet rs = pst.executeQuery();
  ResultSetMetaData rsmd = rs.getMetaData();
  int noOfColumns = rsmd.getColumnCount();
  //It shows the number of columns
  pw.println("The number of columns are " + noOfColumns + "<br>");
  //It shows the name of the columns
  pw.println("The name of the columns are: <br>");
  for(int i =1; i<=noOfColumns;i++){
  String names = rsmd.getColumnName(i);
  pw.println(names);
  }
  }
  catch(Exception e){
  pw.println("The exception is " + e);
  }
  }
}

XML File for this program:

<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE web-app
 PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
 "http://java.sun.com/dtd/web-app_2_3.dtd">

<web-app>
 <servlet>
 <servlet-name>Zulfiqar</servlet-name>
 <servlet-class>ServletGettingColumnsNames</servlet-class>
 </servlet>
 <servlet-mapping>
 <servlet-name>Zulfiqar</servlet-name>
 <url-pattern>/ServletGettingColumnsNames</url-pattern>
 </servlet-mapping>
</web-app>

The output of the program is given below:

Table in the database:

mysql> select * from emp_details;
+--------+----------+---------+-----------+----------+-------+---------+--------
-+
| userId | Name | surname | address1 | address2 | town | country | zipcode
|
+--------+----------+---------+-----------+----------+-------+---------+--------
-+
| 73979 | zulfiqar | Ahmed | Moradabad | Delhi | Okhla | India | 110025
|
+--------+----------+---------+-----------+----------+-------+---------+--------
-+
1 row in set (0.00 sec)

Download this example: