Database Java
Database Java
ODBC
• ODBC stands for Open Database
Connectivity
• A standard or open application
programming interface (API) for accessing a
database.
• ODBC provides a C interface for database
access on Windows environment.
JDBC
• JDBC stands for Java Database Connectivity.
• It is a standard Java API for connecting
programs written in Java to the data in
relational databases.
• JDBC works with Java on a variety of
platforms, such as Windows, Mac OS, and
the various versions of UNIX.
JDBC Driver
• JDBC Driver is a software component that
enables java application to interact with the
database. There are 4 types of JDBC drivers:
JDBC-ODBC bridge driver
Native-API driver (partially java driver)
JDBC-Net pure Java/ Network-Protocol driver (fully
java driver)
Pure Java Driver /Thin driver / Database-Protocol
driver(fully java driver)
JDBC-ODBC bridge driver
• The JDBC type 1 driver, also known as the JDBC-ODBC
bridge driver.
• The JDBC-ODBC bridge driver uses ODBC driver to connect
to the database. The JDBC-ODBC bridge driver converts
JDBC method calls into the ODBC function calls.
Native API driver
• The JDBC type 2 driver, also known as the Native-API driver
• The Native API driver uses the client-side libraries of the
database. The driver converts JDBC method calls into native
calls of the database API. It is not written entirely in java.
JDBC-Net pure Java Driver
• The JDBC type 3 driver, also known as the Pure Java driver for
database middleware. It is a database driver implementation
which makes use of a middle tier between the calling program and
the database.
• The middle-tier (application server) converts JDBC calls directly or
indirectly into a vendor-specific database protocol. It is fully
written in java.
Thin driver
• The JDBC type 4 driver, also known as the Direct to
Database Pure Java Driver, is a database driver implementation
that converts JDBC calls directly into a vendor
specific database protocol.
• That is why it is known as thin driver. It is fully written in Java
language.
JDBC two tier model
• In a two-tier model, a Java application communicates
directly with the database, via the JDBC driver.
JDBC three tier model
• In a three-tier model, a Java application communicates
with a middle tier component that functions as an
application server. The application server talks to a
given database using JDBC.
Common JDBC Components
• The JDBC API provides the following interfaces
and classes −
• DriverManager Class
• Driver Interface
• Connection Interface
• Statement Interface
• ResultSet Interface
Common JDBC Components
DriverManager Class
• The DriverManager class acts as an interface
between user and drivers.
• It keeps track of the drivers that are available
and handles establishing a connection between
a database and the appropriate driver.
• The DriverManager class maintains a list of Driver
classes that have registered themselves by calling
the method DriverManager.registerDriver().
Commonly used methods of DriverManager class
Method Description
public static void registerDriver( Driver
is used to register the given driver
driver); with DriverManager.
Method Description
public Statement creates a statement object that
can be used to execute SQL
createStatement(); queries.
public void
It is used to set the commit
setAutoCommit(boolean status. By default it is true.
status);
It saves the changes made since
public void commit(); the previous commit/rollback
permanent.
Drops all changes made since
public void rollback(); the previous commit/rollback.
closes the connection and Releases a
public void close(); JDBC resources immediately.
Statement Interface
• The Statement interface provides methods to
execute queries with the database.
• It provides factory method to get the object of
ResultSet.
Commonly used methods of Statement interface
Method Description
public boolean next(); is used to move the cursor to the one row next from the
current position.
public boolean previous(); is used to move the cursor to the one row previous from
the current position.
public boolean first(); is used to move the cursor to the first row in result set
object.
public boolean last(); is used to move the cursor to the last row in result set
object.
public boolean absolute(int row); is used to move the cursor to the specified row number in
the ResultSet object.
public int getInt(int columnIndex); is used to return the data of specified column index of the
current row as int.
public int getInt(String is used to return the data of specified column name of
columnName); the current row as int.
public String getString(int is used to return the data of specified column index of the
columnIndex); current row as String.
public String getString(String is used to return the data of specified column name of
columnName); the current row as String.
Connecting to Database
• There are 5 steps to connect any java
application with the database in java using
JDBC. They are as follows:
1. Register the driver class
2. Creating connection
3. Creating statement
4. Executing queries
5. Closing connection
1.Register the driver class
• The Class.forName() method is used to register the
driver class. This method is used to dynamically load
the driver class.
con.close();
Example to Connect Java Application
with mysql database
import java.sql.*;
class MysqlCon{
public static void main(String args[])
{
Try{
Class.forName("com.mysql.jdbc.Driver");
Connection con=DriverManager.getConnection("jdbc:mysql://localhost:3306/Emp",
"root","root");
Statement stmt=con.createStatement();
ResultSet rs=stmt.executeQuery("select * from emp");
while(rs.next())
System.out.println(rs.getInt(1)+" "+rs.getString(2)+" "+rs.getString(3));
con.close();
}
catch(Exception e) {
System.out.println(e); }
}
Connection with Access Database
import java.sql.*;
public class JdbcAccessTest {
public static void main(String[] args) {
String databaseURL = "jdbc:ucanaccess://e://Contacts.accdb";
try (
Connection connection = DriverManager.getConnection(databaseURL)) {
String sql = "INSERT INTO Contacts (Full_Name, Email, Phone) VALUES (?, ?, ?)";
PreparedStatement preparedStatement = connection.prepareStatement(sql);
preparedStatement.setString(1, "Rohit");
preparedStatement.setString(2, "rohit@mi.com");
preparedStatement.setString(3, "0919989998");
int row = preparedStatement.executeUpdate();
if (row > 0) {
System.out.println("A row has been inserted successfully.");
}
sql = "SELECT * FROM Contacts";
Statement statement = connection.createStatement();
ResultSet result = statement.executeQuery(sql);
while (result.next()) {
int id = result.getInt("Contact_ID");
String fullname = result.getString("Full_Name");
String email = result.getString("Email");
String phone = result.getString("Phone");
System.out.println(id + ", " + fullname + ", " + email + ", " + phone);
}
} catch (SQLException ex) {
ex.printStackTrace();
}
}
}