0
2.7kviews
JDBC with example

Mumbai University > Information Technology > Sem 4 > Web Programming

Marks: 5M

Year: May 2015

1 Answer
0
6views

JDBC stands for Java Database Connectivity, which is a standard Java API for database-independent connectivity between the Java programming language and a wide range of databases.

The JDBC API supports both two-tier and three-tier processing models for database access but in general, JDBC Architecture consists of two layers −

  1. JDBC API: This provides the application-to-JDBC Manager connection.
  2. JDBC Driver API: This supports the JDBC Manager-to-Driver Connection.

Common JDBC Components

The JDBC API provides the following interfaces and classes −

  • DriverManager: This class manages a list of database drivers. Matches connection requests from the java application with the proper database driver using communication sub protocol. The first driver that recognizes a certain subprotocol under JDBC will be used to establish a database Connection.
  • Driver: This interface handles the communications with the database server. You will interact directly with Driver objects very rarely. Instead, you use DriverManager objects, which manages objects of this type. It also abstracts the details associated with working with Driver objects.
  • Connection: This interface with all methods for contacting a database. The connection object represents communication context, i.e., all communication with database is through connection object only.
  • Statement: You use objects created from this interface to submit the SQL statements to the database. Some derived interfaces accept parameters in addition to executing stored procedures.
  • ResultSet: These objects hold data retrieved from a database after you execute an SQL query using Statement objects. It acts as an iterator to allow you to move through its data.
  • SQLException: This class handles any errors that occur in a database application.

There are following six steps involved in building a JDBC application −

  • Import the packages: Requires that you include the packages containing the JDBC classes needed for database programming. Most often, using import java.sql.* will suffice.
  • Register the JDBC driver: Requires that you initialize a driver so you can open a communication channel with the database.
  • Open a connection: Requires using the DriverManager.getConnection() method to create a Connection object, which represents a physical connection with the database.
  • Execute a query: Requires using an object of type Statement for building and submitting an SQL statement to the database.
  • Extract data from result set: Requires that you use the appropriate ResultSet.getXXX() method to retrieve the data from the result set.
  • Clean up the environment: Requires explicitly closing all database resources versus relying on the JVM's garbage collection.

This sample example can serve as a template when you need to create your own JDBC application

//STEP 1. Import required packages
import java.sql.*;
public class FirstExample {
   // JDBC driver name and database URL
static final String JDBC_DRIVER = "com.mysql.jdbc.Driver";  
static final String DB_URL = "jdbc:mysql://localhost/EMP";

   //  Database credentials
static final String USER = "username";
static final String PASS = "password";

public static void main(String[] args) {
   Connection conn = null;
   Statement stmt = null;
try{
      //STEP 2: Register JDBC driver
Class.forName("com.mysql.jdbc.Driver");

      //STEP 3: Open a connection
System.out.println("Connecting to database...");
conn = DriverManager.getConnection(DB_URL,USER,PASS);

      //STEP 4: Execute a query
System.out.println("Creating statement...");
stmt = conn.createStatement();
      String sql;
sql = "SELECT id, first, last, age FROM Employees";
      ResultSet rs = stmt.executeQuery(sql);

      //STEP 5: Extract data from result set
while(rs.next()){
         //Retrieve by column name
int id  = rs.getInt("id");
int age = rs.getInt("age");
         String first = rs.getString("first");
         String last = rs.getString("last");

         //Display values
System.out.print("ID: " + id);
System.out.print(", Age: " + age);
System.out.print(", First: " + first);
System.out.println(", Last: " + last);
      }
      //STEP 6: Clean-up environment
rs.close();
stmt.close();
conn.close();
}catch(SQLException se){
      //Handle errors for JDBC
se.printStackTrace();
}catch(Exception e){
      //Handle errors for Class.forName
e.printStackTrace();
}finally{
      //finally block used to close resources
try{
if(stmt!=null)
stmt.close();
}catch(SQLException se2){
      }// nothing we can do
try{
if(conn!=null)
conn.close();
}catch(SQLException se){
se.printStackTrace();
      }//end finally try
   }//end try
System.out.println("Goodbye!");
}//end main
}//end FirstExample

Compile the above example as follows −

C:>javac FirstExample.java

C:>

When you run FirstExample, it produces the following result −

C:>java FirstExample

Connecting to database...

Creating statement...

ID: 100, Age: 18, First: Zara, Last: Ali

ID: 101, Age: 25, First: Mahnaz, Last: Fatma

ID: 102, Age: 30, First: Zaid, Last: Khan

ID: 103, Age: 28, First: Sumit, Last: Mittal

Please log in to add an answer.