Ajp Unit 4
Ajp Unit 4
1
Specific Objectives
• To create database driven business
applications using the database API’S two tier
and three tier models and the Java.Sql package
2
Database Drivers
• Think of a database as just another device connected to
your computer
• Like other devices it has a driver program to
relieves you of having to do low level programming
to use the database
• The driver provides you with a high level API to the
database
3
ODBC
• Open Data Base Connectivity
• Developed by Microsoft for the Windows
platform as the way for Windows applications
to access Microsoft databases (SQL Server,
FoxPro, Access)
• Has become an industry standard
• Most data base vendors supply native, ODBC,
and JDBC drivers for their data base products .
• It was developed in C programming. 4
• It is low level, high performance interface that
is designed specially for relational data stores.
JDBC
• JDBC drivers implement the defined interfaces
in the JDBC API for interacting with your
database server.
• Package: java.sql
• JDBC drivers enable you to open database
connections and to interact with it by sending
SQL or database commands then receiving
results with Java.
5
JDBC API
• JDBC is a Java API that is used to
connect and execute query for the
database.
• JDBC API uses jdbc drivers to connects
to the database.
6
JDBC Architecture
Java
Application
JDBC
API
7
JDBC Driver Types
• JDBC driver implementation vary because of wide variety of
OS, hardware, databases in which Java operates. It divides
into 4 types:
• Type 1
• JDBC-ODBC Bridge
• Type 2
• Native API, partially java
• Type 3
• JDBC Network Driver, partially java
• Type 4
8
• 100% Java
Type 1 Drivers
• The JDBC-ODBC bridge driver uses ODBC driver
to connect to the database.
9
Type 1 Driver (cont.)
10
Type 1 Drivers
• Advantages:
• easy to use.
• can be easily connected to any database.
• Disadvantages:
• Performance degraded because JDBC method call
is converted into the ODBC function calls.
• The ODBC driver needs to be installed on the
client machine.
11
Type 2 Drivers
13
Type 2 Drivers
• Advantage:
• performance upgraded than JDBC-ODBC bridge
driver.
• Disadvantage:
• The Native driver needs to be installed on the
each client machine.
• The Vendor client library needs to be installed on
client machine.
14
Type 3 Drivers
• The Network Protocol driver uses
middleware (application server) that converts
JDBC calls directly or indirectly into the
vendor-specific database protocol.
15
Type 3 Drivers (cont.)
16
Type 3 Drivers
• Advantage:
• No client side library is required because of
application server that can perform many tasks
like auditing, load balancing, logging etc.
• Disadvantages:
• Network support is required on client machine.
• Requires database-specific coding to be done in
the middle tier.
• Maintenance of Network Protocol driver becomes
costly because it requires database-specific
coding
to be done in the middle tier. 17
Type 4 Drivers
18
Type 4 Drivers (cont.)
19
Driver 4 Type
• Advantage:
• Better performance than all other drivers.
• No software is required at client side or
server side.
• Disadvantage:
• Drivers depends on the Database.
20
Which Driver should I used?
• If you are accessing one type of database, such as
Oracle,
Sybase, or IBM, the preferred driver type is 4.
• If your Java application is accessing multiple types of
databases at the same time, type 3 is the preferred
driver.
• Type 2 drivers are useful in situations, where a type 3 or
type 4 driver is not available yet for your database.
• The type 1 driver is not considered a deployment-level
driver, and is typically used for development and testing
prposes only. 21
Steps to connect Database
• Register the driver class
• Creating connection
• Creating statement
• Executing queries
• Closing connection
22
Step 1
• The forName() method of Class class is
used to register the driver class.
• Example 23
• Class.forName("oracle.jdbc.driver.OracleDriver");
Step 2
• The getConnection() method of DriverManager class
is used to establish connection with the database.
• Syntax:
• 1) public static Connection getConnection(String
url)th
rows SQLException
• 2) public static Connection getConnection(String url,St
ring name,String password) throws SQLException
• Example
24
• racle:thin:@localhost:1521:xe","system","password");
Connection con=DriverManager.getConnection("jdbc:o
Step 3
• The createStatement() method of Connection
interface is used to create statement.
• The object of statement is responsible to execute
queries with the database.
• Syntax:
• public Statement createStatement()throws
SQLExc eption
• Ex:
• Statement stmt=con.createStatement(); 25
Step 4
• The executeQuery() method of Statement interface is
used to execute queries to the database.
• This method returns the object of ResultSet that can be
used to get all the records of a table.
• Syntax:
• public ResultSet executeQuery(String sql)throws
SQLEx
ception
• Ex:
ResultSet rs=stmt.executeQuery("select * from emp");
26
while(rs.next()){
System.out.println(rs.getInt(1)+" "+rs.getString(2));
Step 5
• By closing connection object statement and
ResultSet will be closed automatically.
• The close() method of Connection interface is
used
to close the connection.
• public void close()throws SQLException
• Ex:
• con.close();
27
Concrete Classes for Interfaces
• ResultSet interface: oracle.jdbc.driver.OracleResultSetImpl
• Statement: oracle.jdbc.driver.T4CStatement
• Connection: oracle.jdbc.driver.T4CConnection
• PreparedStatement: oracle.jdbc.driver.T4CPreparedStatement
28
Types of Architecture
• Two tire architecture
• Three tire architecture
l
ti
aP
Nilesh
.
Mr
29
Statement Interface
• It is mainly used to execute queries.
• Few methods of Statement interface:
• public ResultSet executeQuery(String sql)
• Used to execute select query.
• public int executeUpdate(String sql)
• Used to execute create, insert, update, delete or drop etc
• public boolean execute(String sql)
• Executes the given SQL statement, which may return multiple results.
• public int [] executeBatch()
• Submits a batch of commands to the database for execution and if all
commands execute successfully, returns an array of update counts. 30
Statement Interface
• Insert Record:
• Statement st = con.createStatement();
• St.executeUpdate(“insert into dept values (‘comp’,0130,’GPAN’)”);
• Delete Record:
• Statement st = con.createStatement();
• St.executeUpdate(“delete from dept where deptno=0130”);
31
PreparedStatement and
CallableStatement Interface
• Precompiled sql statement object.
• It can read runtime input parameters.
• Ex: PreparedStatement pstmt =
con.prepareStatement(“update emp set salary = ?
Where id = ?”)
• CallableStatement interface used when Java
interacting with database using stored
procedures.
• Ex: 32
• CallableStatement cstmt = null;
• String SQL = "{call getEmpName (?, ?)}";
PreparedStatement Example
String sql = "update DEPARTMENTS set DEPARTMENT_NAME
=
? where DEPARTMENT_ID = ?";
pst.executeUpdate(); 33
Recommended Use
Interfaces Recommended Use
PreparedStatement Use the when you plan to use the SQL statements many times.
The PreparedStatement interface accepts input parameters at
runtime.
CallableStatement Use the when you want to access the database stored
procedures. The CallableStatement interface can also accept
runtime input parameters. 34
Statement Interface Hierarchy
35
Batch Execute Example
stmt.addBatch("update DEPARTMENTS set DEPARTMENT_NAME =
'Administrations' where DEPARTMENT_ID = 10");
stmt.executeBatch();
36
ResultSet Interface
• ResultSet is table of data which represents a data
from database.
• next() method is used to move cursor to next row.
• Type of ResultSet: Bydefault
TYPE_FORWARD_ONLY
• ResultSet.TYPE_FORWARD_ONLY
• ResultSet.TYPE_SCROLL_INSENSITIVE
• ResultSet.TYPE_SCROLL_SENSITIVE
37
ResultSet Interface methods
• beforeFirst()
• afterLast()
• first()
• last()
• previous()
• next()
• getRow()
38
Transaction
• All action carried out or none of them.
• For AutoCommit
• connection.setAutoCommit(false);
• For Rollback:
• connection.rollback();
• For Commit:
• connection.commit();
39
DatabaseMetaData Interface
• Provide meta data about the database have
connected to.
40
DatabaseMetaData Interface
• Obtaining a DatabaseMetaData Instance
• DatabaseMetaData databaseMetaData = connection.getMetaData();
41
DatabaseMetaData Interface
• Database Driver Version
• int driverMajorVersion = databaseMetaData.getDriverMajorVersion();
• int driverMinorVersion =
databaseMetaData.getDriverMinorVersion();
• Listing Tables
String catalog = null;
String schemaPattern = null; String tableNamePattern = null; String[] types = null;
ResultSet result = databaseMetaData.getTables( catalog, schemaPattern,
tableNamePattern, types );
42
while(result.next()) { String tableName = result.getString(3); }