SlideShare ist ein Scribd-Unternehmen logo
1 von 106
JDBC
JAVA DATABASE CONNECTIVITY
What is JDBC?
• 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 library includes APIs for each
of the tasks mentioned below that are
commonly associated with database
usage.
• Making a connection to a database.
• Creating SQL or MySQL statements.
• Executing SQL or MySQL queries in the
database.
• Viewing & Modifying the resulting records.
• JDBC is a specification that provides a complete
set of interfaces that allows for portable access
to an underlying database. Java can be used to
write different types of executables, such as −
– Java Applications
– Java Applets
– Java Servlets
– Java ServerPages (JSPs)
– Enterprise JavaBeans (EJBs).
• All of these different executables are able
to use a JDBC driver to access a
database, and take advantage of the
stored data.
JDBC Architecture
• The JDBC API supports both two-tier and
three-tier processing models for database
access but in general, JDBC Architecture
consists of two layers −
– JDBC API: This provides the application-to-
JDBC Manager connection.
– JDBC Driver API: This supports the JDBC
Manager-to-Driver Connection.
• The JDBC API uses a driver manager and
database-specific drivers to provide transparent
connectivity to databases.
• The JDBC driver manager ensures that the
correct driver is used to access each data
source.
• The driver manager is capable of supporting
multiple concurrent drivers connected to multiple
databases.
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.
• Create Database
– The CREATE DATABASE statement is used for
creating a new database.
• SQL> CREATE DATABASE EMP;
• Drop Database
– The DROP DATABASE statement is used for deleting
an existing database. The syntax is −
– SQL> DROP DATABASE DATABASE_NAME;
Create table
SQL> CREATE TABLE Employees (
id INT NOT NULL,
age INT NOT NULL,
first VARCHAR(255),
last VARCHAR(255),
PRIMARY KEY ( id )
);
INSERT Data
– SQL> INSERT INTO Employees VALUES
(100, 18, 'Zara', 'Ali');
SELECT Data
• SQL> SELECT first, last, age FROM
Employees WHERE id = 100;
UPDATE Data
• SQL> UPDATE Employees SET age=20
WHERE id=100;
DELETE Data
• SQL> DELETE FROM Employees
WHERE id=100;
Creating 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.
//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
What is JDBC Driver?
• JDBC drivers implement the defined interfaces in the
JDBC API, for interacting with your database server.
• For example, using JDBC drivers enable you to open
database connections and to interact with it by sending
SQL or database commands then receiving results with
Java.
• The Java.sql package that ships with JDK, contains
various classes with their behaviours defined and their
actual implementaions are done in third-party drivers.
Third party vendors implements the java.sql.Driver
interface in their database driver.
JDBC Drivers Types
• JDBC driver implementations vary
because of the wide variety of operating
systems and hardware platforms in which
Java operates. Sun has divided the
implementation types into four categories
Type 1: JDBC-ODBC Bridge
Driver
• In a Type 1 driver, a JDBC bridge is used to
access ODBC drivers installed on each client
machine. Using ODBC, requires configuring on
your system a Data Source Name (DSN) that
represents the target database.
• When Java first came out, this was a useful
driver because most databases only supported
ODBC access but now this type of driver is
recommended only for experimental use or
when no other alternative is available.
• The JDBC-ODBC Bridge that comes with
JDK 1.2 is a good example of this kind of
driver.
Type 2: JDBC-Native API
• n a Type 2 driver, JDBC API calls are converted into
native C/C++ API calls, which are unique to the
database. These drivers are typically provided by the
database vendors and used in the same manner as the
JDBC-ODBC Bridge. The vendor-specific driver must be
installed on each client machine.
• If we change the Database, we have to change the
native API, as it is specific to a database and they are
mostly obsolete now, but you may realize some speed
increase with a Type 2 driver, because it eliminates
ODBC's overhead.
• The Oracle Call Interface (OCI) driver is
an example of a Type 2 driver.
Type 3: JDBC-Net pure Java
• In a Type 3 driver, a three-tier approach is used to
access databases. The JDBC clients use standard
network sockets to communicate with a middleware
application server. The socket information is then
translated by the middleware application server into the
call format required by the DBMS, and forwarded to the
database server.
• This kind of driver is extremely flexible, since it requires
no code installed on the client and a single driver can
actually provide access to multiple databases.
• You can think of the application server as
a JDBC "proxy," meaning that it makes
calls for the client application. As a result,
you need some knowledge of the
application server's configuration in order
to effectively use this driver type.
Type 4: 100% Pure Java
• In a Type 4 driver, a pure Java-based driver
communicates directly with the vendor's
database through socket connection. This is the
highest performance driver available for the
database and is usually provided by the vendor
itself.
• This kind of driver is extremely flexible, you don't
need to install special software on the client or
server. Further, these drivers can be
downloaded dynamically.
• MySQL's Connector/J driver is a Type 4
driver. Because of the proprietary nature
of their network protocols, database
vendors usually supply type 4 drivers.
Which Driver should be
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
purposes only.
JDBC - Database Connections
• Import JDBC Packages: Add import
statements to your Java program to import
required classes in your Java code.
• Register JDBC Driver: This step causes the
JVM to load the desired driver implementation
into memory so it can fulfill your JDBC requests.
• Database URL Formulation: This is to create a
properly formatted address that points to the
database to which you wish to connect.
• Create Connection Object: Finally, code a call
to the DriverManager object's getConnection( )
method to establish actual database connection.
Import JDBC Packages
• import java.sql.* ; // for standard JDBC programs
• import java.math.* ; // for BigDecimal and
BigInteger support
Register JDBC Driver
• You must register the driver in your
program before you use it. Registering the
driver is the process by which the Oracle
driver's class file is loaded into the
memory, so it can be utilized as an
implementation of the JDBC interfaces.
• (only ones)
Approach I - Class.forName()
• The most common approach to register a
driver is to use Java's Class.forName()
method, to dynamically load the driver's
class file into memory, which automatically
registers it.
• This method is preferable because it
allows you to make the driver registration
configurable and portable.
try
{ Class.forName("oracle.jdbc.driver.OracleDriver").newIn
stance();
} catch(ClassNotFoundException ex)
{ System.out.println("Error: unable to load driver class!");
System.exit(1);
catch(IllegalAccessException ex)
{ System.out.println("Error: access problem while
loading!");
System.exit(2);
catch(InstantiationException ex) {
System.out.println("Error: unable to instantiate driver!");
System.exit(3);
}
Approach II -
DriverManager.registerDriver()
• The second approach you can use to
register a driver, is to use the static
DriverManager.registerDriver() method.
• You should use the registerDriver()
method if you are using a non-JDK
compliant JVM, such as the one provided
by Microsoft.
try {
Driver myDriver = new
oracle.jdbc.driver.OracleDriver();
DriverManager.registerDriver( myDriver );
} catch(ClassNotFoundException ex)
{ System.out.println("Error: unable to load
driver class!");
System.exit(1); }
Database URL Formulation
• After you've loaded the driver, you can
establish a connection using the
DriverManager.getConnection() method.
• three overloaded
DriverManager.getConnection() methods
−
– getConnection(String url)
– getConnection(String url, Properties prop)
– getConnection(String url, String user, String
password)
• A database URL is an address that points
to your database.
RDBMS JDBC driver name URL format
MySQL com.mysql.jdbc.Driver
jdbc:mysql://hostname/
databaseName
ORACLE oracle.jdbc.driver.OracleDriver
jdbc:oracle:thin:@hostname:port
Number:databaseName
DB2
COM.ibm.db2.jdbc.net.DB2Driv
er
jdbc:db2:hostname:port
Number/databaseName
Sybase com.sybase.jdbc.SybDriver
jdbc:sybase:Tds:hostname: port
Number/databaseName
Create Connection Object
• Using a Database URL with a username
and password
String URL = "jdbc:oracle:thin:@amrood:1521:EMP";
String USER = "username";
String PASS = "password"
Connection conn = DriverManager.getConnection(URL,
USER, PASS);
• Using Only a Database URL
String URL =
"jdbc:oracle:thin:username/password@amrood:1521:EMP";
Connection conn = DriverManager.getConnection(URL);
Using a Database URL and a
Properties Object
import java.util.*;
String URL =
"jdbc:oracle:thin:@amrood:1521:EMP";
Properties info = new Properties( );
info.put( "user", "username" );
info.put( "password", "password" );
Connection conn =
DriverManager.getConnection(URL, info);
Closing JDBC Connections
• At the end of your JDBC program, it is required explicitly
to close all the connections to the database to end each
database session.
• You should make a habit of always closing the
connection with the close() method associated with
connection object.
• To ensure that a connection is closed, you could provide
a 'finally' block in your code. A finally block always
executes, regardless of an exception occurs or not.
conn.close();
Statements, PreparedStatement and
CallableStatement
• Once a connection is obtained we can interact
with the database. The JDBC Statement,
CallableStatement, and PreparedStatement
interfaces define the methods and properties
that enable you to send SQL or PL/SQL
commands and receive data from your
database.
• They also define methods that help bridge data
type differences between Java and SQL data
types used in a database.
Interfaces Recommended Use
Statement
Use the for general-purpose access to your database.
Useful when you are using static SQL statements at
runtime. The Statement interface cannot accept
parameters.
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.
Statement
//STEP 1. Import required packages
import java.sql.*;
public class JDBCExample {
// 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,P
ASS);
//STEP 4: Execute a query
System.out.println("Creating statement...");
stmt = conn.createStatement();
String sql = "UPDATE Employees set age=30 WHERE
id=103";
// Let us check if it returns a true Result Set or not.
Boolean ret = stmt.execute(sql);
System.out.println("Return value is : " + ret.toString() );
// Let us update age of the record with ID = 103;
int rows = stmt.executeUpdate(sql);
System.out.println("Rows impacted : " + rows );
// Let us select all the records and display them.
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 JDBCExample
PreparedStatement
//STEP 4: Execute a query
System.out.println("Creating statement...");
String sql = "UPDATE Employees set age=? WHERE
id=?";
stmt = conn.prepareStatement(sql);
//Bind values into the parameters.
stmt.setInt(1, 35); // This would set age
stmt.setInt(2, 102); // This would set ID
// Let us update age of the record with ID = 102;
int rows = stmt.executeUpdate();
System.out.println("Rows impacted : " + rows );
// Let us select all the records and display them.
sql = "SELECT id, first, last, age FROM Employees";
ResultSet rs = stmt.executeQuery(sql);
callbackstatement
Three types of parameters exist: IN, OUT, and
INOUT. The PreparedStatement object only
uses the IN parameter. The CallableStatement
object can use all the three.
Parameter Description
IN
A parameter whose value is unknown when the SQL statement is
created. You bind values to IN parameters with the setXXX()
methods.
OUT
A parameter whose value is supplied by the SQL statement it
returns. You retrieve values from theOUT parameters with the
getXXX() methods.
INOUT
A parameter that provides both input and output values. You bind
variables with the setXXX() methods and retrieve values with the
getXXX() methods.
• Make sure you have created this stored
procedure in your EMP Database. You
can use MySQL Query Browser to get it
done.
DELIMITER $$
DROP PROCEDURE IF EXISTS
`EMP`.`getEmpName` $$
CREATE PROCEDURE `EMP`.`getEmpName`
(IN EMP_ID INT, OUT EMP_FIRST
VARCHAR(255)) BEGIN SELECT first INTO
EMP_FIRST FROM Employees WHERE ID =
EMP_ID;
END $$
DELIMITER ;
//STEP 4: Execute a query
System.out.println("Creating statement...");
String sql = "{call getEmpName (?, ?)}";
stmt = conn.prepareCall(sql);
//Bind IN parameter first, then bind OUT parameter int empID = 102;
stmt.setInt(1, empID);
// This would set ID as 102
// Because second parameter is OUT so register it
stmt.registerOutParameter(2, java.sql.Types.VARCHAR);
//Use execute method to run stored procedure.
System.out.println("Executing stored procedure..." );
stmt.execute();
//Retrieve employee name with getXXX method
String empName = stmt.getString(2);
System.out.println("Emp Name with ID:" + empID + " is " + empName);
stmt.close();
conn.close();
JDBC - Result Sets
• The SQL statements that read data from a
database query, return the data in a result set.
The SELECT statement is the standard way to
select rows from a database and view them in a
result set. The java.sql.ResultSet interface
represents the result set of a database query.
• A ResultSet object maintains a cursor that points
to the current row in the result set. The term
"result set" refers to the row and column data
contained in a ResultSet object.
• The methods of the ResultSet interface can be
broken down into three categories −
– Navigational methods: Used to move the cursor
around.
– Get methods: Used to view the data in the columns
of the current row being pointed by the cursor.
– Update methods: Used to update the data in the
columns of the current row. The updates can then be
updated in the underlying database as well.
• The cursor is movable based on the
properties of the ResultSet. These
properties are designated when the
corresponding Statement that generates
the ResultSet is created.
• JDBC provides the following connection
methods to create statements with desired
ResultSet −
– createStatement(int RSType, int RSConcurrency);
– prepareStatement(String SQL, int RSType, int
RSConcurrency);
– prepareCall(String sql, int RSType, int
RSConcurrency);
• The first argument indicates the type of a
ResultSet object and the second argument is
one of two ResultSet constants for specifying
whether a result set is read-only or updatable.
Type of ResultSet
• If you do not specify any ResultSet type,
you will automatically get one that is
TYPE_FORWARD_ONLY.
Type Description
ResultSet.TYPE_FORWARD_ONLY The cursor can only move forward in
the result set.
ResultSet.TYPE_SCROLL_INSENSITI
VE
The cursor can scroll forward and
backward, and the result set is not
sensitive to changes made by others to
the database that occur after the result
set was created.
ResultSet.TYPE_SCROLL_SENSITIV
E.
The cursor can scroll forward and
backward, and the result set is
sensitive to changes made by others to
the database that occur after the result
set was created.
Concurrency of ResultSet
• If you do not specify any Concurrency
type, you will automatically get one that is
CONCUR_READ_ONLY.
Concurrency Description
ResultSet.CONCUR_READ_ONLY Creates a read-only result set. This is
the default
ResultSet.CONCUR_UPDATABLE Creates an updateable result set.
try {
Statement stmt =
conn.createStatement( ResultSet.TYPE_FOR
WARD_ONLY,
ResultSet.CONCUR_READ_ONLY);
} catch(Exception ex) {
.... } finally {
.... }
Navigating a Result Set
• There are several methods in the
ResultSet interface that involve moving
the cursor,
S.N. Methods & Description
1 public void beforeFirst() throws SQLExceptionMoves the cursor just before the first row.
2 public void afterLast() throws SQLExceptionMoves the cursor just after the last row.
3 public boolean first() throws SQLExceptionMoves the cursor to the first row.
4 public void last() throws SQLExceptionMoves the cursor to the last row.
5 public boolean absolute(int row) throws SQLExceptionMoves the cursor to the specified
row.
6 public boolean relative(int row) throws SQLExceptionMoves the cursor the given number of
rows forward or backward, from where it is currently pointing.
7 public boolean previous() throws SQLExceptionMoves the cursor to the previous row. This
method returns false if the previous row is off the result set.
8 public boolean next() throws SQLExceptionMoves the cursor to the next row. This method
returns false if there are no more rows in the result set.
9 public int getRow() throws SQLExceptionReturns the row number that the cursor is pointing
to.
10 public void moveToInsertRow() throws SQLExceptionMoves the cursor to a special row in
the result set that can be used to insert a new row into the database. The current cursor
location is remembered.
11 public void moveToCurrentRow() throws SQLExceptionMoves the cursor back to the
current row if the cursor is currently at the insert row; otherwise, this method does nothing
• System.out.println("Creating statement...");
• stmt =
conn.createStatement( ResultSet.TYPE_SCROLL_INSENSITI
VE, ResultSet.CONCUR_READ_ONLY);
• String sql;
• sql = "SELECT id, first, last, age FROM Employees";
• ResultSet rs = stmt.executeQuery(sql);
• // Move cursor to the last row.
• System.out.println("Moving cursor to the last...");
• rs.last();
//STEP 5: Extract data from result set
System.out.println("Displaying
record..."); //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);
• rs.first();
• rs.next();
Viewing a Result Set
• The ResultSet interface contains dozens
of methods for getting the data of the
current row.
• There is a get method for each of the
possible data types, and each get method
has two versions −
– One that takes in a column name.
– One that takes in a column index.
S.N. Methods & Description
1 public int getInt(String columnName) throws
SQLExceptionReturns the int in the current row in the column named
columnName.
2 public int getInt(int columnIndex) throws SQLExceptionReturns
the int in the current row in the specified column index. The column
index starts at 1, meaning the first column of a row is 1, the second
column of a row is 2, and so on.
• Similarly, there are get methods in the ResultSet
interface for each of the eight Java primitive
types, as well as common types such as
java.lang.String, java.lang.Object, and
java.net.URL.
• There are also methods for getting SQL data
types java.sql.Date, java.sql.Time,
java.sql.TimeStamp, java.sql.Clob, and
java.sql.Blob
Updating a Result Set
• The ResultSet interface contains a
collection of update methods for updating
the data of a result set.
• As with the get methods, there are two
update methods for each data type −
– One that takes in a column name.
– One that takes in a column index.
S.N. Methods & Description
1 public void updateString(int columnIndex, String s) throws
SQLExceptionChanges the String in the specified column to the value
of s.
2 public void updateString(String columnName, String s) throws
SQLExceptionSimilar to the previous method, except that the column
is specified by its name instead of its index.
• Updating a row in the result set changes
the columns of the current row in the
ResultSet object, but not in the underlying
database. To update your changes to the
row in the database, you need to invoke
one of the following methods.
S.N. Methods & Description
1 public void updateRow()Updates the current row by updating the
corresponding row in the database.
2 public void deleteRow()Deletes the current row from the database
3 public void refreshRow()Refreshes the data in the result set to reflect
any recent changes in the database.
4 public void cancelRowUpdates()Cancels any updates made on the
current row.
5 public void insertRow()Inserts a row into the database. This method
can only be invoked when the cursor is pointing to the insert row.
System.out.println("Creating statement...");
Statement stmt =
conn.createStatement( ResultSet.TYPE_SCROLL_INSENSITI
VE, ResultSet.CONCUR_UPDATABLE);
//STEP 5: Execute a query
String sql = "SELECT id, first, last, age FROM Employees";
ResultSet rs = stmt.executeQuery(sql);
System.out.println("List result set for reference....");
printRs(rs);
//STEP 6: Loop through result set and add 5 in age //Move to BFR
postion so while-loop works properly
rs.beforeFirst();
//STEP 7: Extract data from result set
while(rs.next()){
//Retrieve by column name int newAge = rs.getInt("age") + 5;
rs.updateDouble( "age", newAge );
rs.updateRow(); }
System.out.println("List result set showing new ages...");
printRs(rs);
// Insert a record into the table.
//Move to insert row and add column data with updateXXX()
System.out.println("Inserting a new record...");
rs.moveToInsertRow();
rs.updateInt("id",104);
rs.updateString("first","John");
rs.updateString("last","Paul");
rs.updateInt("age",40);
//Commit row
rs.insertRow();
System.out.println("List result set showing new set..."); printRs(rs);
// Delete second record from the table.
// Set position to second record first
rs.absolute( 2 );
System.out.println("List the record before deleting..."); //Retrieve by column
name int id = rs.getInt("id");
int age = rs.getInt("age");
String first = rs.getString("first");
String last = rs.getString("last");
System.out.print("ID: " + id); System.out.print(", Age: " + age);
System.out.print(", First: " + first); System.out.println(", Last: " + last);
//Delete row
rs.deleteRow();
JDBC - Data Type
• The JDBC driver converts the Java data
type to the appropriate JDBC type, before
sending it to the database. It uses a
default mapping for most data types. For
example, a Java int is converted to an
SQL INTEGER. Default mappings were
created to provide consistency between
drivers.
• In Next slide : table summarizes the
default JDBC data type that the Java data
type is converted to, when you call the
setXXX() method of the
PreparedStatement or CallableStatement
object or the ResultSet.updateXXX()
method.
SQL JDBC/Java setXXX getXXX
VARCHAR java.lang.String setString getString
CHAR java.lang.String setString getString
LONGVARCHAR java.lang.String setString getString
BIT boolean setBoolean getBoolean
NUMERIC java.math.BigDeci
mal
setBigDecimal getBigDecimal
TINYINT byte setByte getByte
SMALLINT short setShort getShort
INTEGER int setInt getInt
BIGINT long setLong getLong
REAL float setFloat getFloat
FLOAT float setFloat getFloat
DOUBLE double setDouble getDouble
VARBINARY byte[ ] setBytes getBytes
BINARY byte[ ] setBytes getBytes
DATE java.sql.Date setDate getDate
TIME java.sql.Time setTime getTime
TIMESTAMP java.sql.Timestam
p
setTimestamp getTimestamp
CLOB java.sql.Clob setClob getClob
BLOB java.sql.Blob setBlob getBlob
ARRAY java.sql.Array setARRAY getARRAY
REF java.sql.Ref SetRef getRef
STRUCT java.sql.Struct SetStruct getStruct
Date & Time Data Types
• The java.sql.Date class maps to the SQL
DATE type, and the java.sql.Time and
java.sql.Timestamp classes map to the
SQL TIME and SQL TIMESTAMP data
types, respectively.
public class SqlDateTime {
public static void main(String[] args) {
//Get standard date and time
java.util.Date javaDate = new java.util.Date();
long javaTime = javaDate.getTime();
System.out.println("The Java Date is:" + javaDate.toString());
//Get and display SQL DATE
java.sql.Date sqlDate = new java.sql.Date(javaTime);
System.out.println("The SQL DATE is: " + sqlDate.toString());
//Get and display SQL TIME
java.sql.Time sqlTime = new java.sql.Time(javaTime);
System.out.println("The SQL TIME is: " + sqlTime.toString());
//Get and display SQL TIMESTAMP java.sql.Timestamp
sqlTimestamp = new java.sql.Timestamp(javaTime);
System.out.println("The SQL TIMESTAMP is: " +
sqlTimestamp.toString()); }//end main }//end SqlDateTime
Handling NULL Values
• SQL's use of NULL values and Java's use of null
are different concepts. So, to handle SQL NULL
values in Java, there are three tactics you can
use −
– Avoid using getXXX( ) methods that return primitive
data types.
– Use wrapper classes for primitive data types, and use
the ResultSet object's wasNull( ) method to test
whether the wrapper class variable that received the
value returned by the getXXX( ) method should be set
to null.
– Use primitive data types and the ResultSet object's
wasNull( ) method to test whether the primitive
variable that received the value returned by the
getXXX( ) method should be set to an acceptable
value that you've chosen to represent a NULL.
Example
Statement stmt = conn.createStatement( );
String sql = "SELECT id, first, last, age
FROM Employees";
ResultSet rs = stmt.executeQuery(sql);
int id = rs.getInt(1);
if( rs.wasNull( ) ) {
id = 0;
}
Remaining topics
• Transaction
• Exceptin
• Batch processing
• Stored Procedure
• Streaming Data
Java database connectivity

Weitere ähnliche Inhalte

Was ist angesagt?

Java web application development
Java web application developmentJava web application development
Java web application developmentRitikRathaur
 
Java DataBase Connectivity API (JDBC API)
Java DataBase Connectivity API (JDBC API)Java DataBase Connectivity API (JDBC API)
Java DataBase Connectivity API (JDBC API)Luzan Baral
 
Jdbc architecture and driver types ppt
Jdbc architecture and driver types pptJdbc architecture and driver types ppt
Jdbc architecture and driver types pptkamal kotecha
 
Java Collections | Collections Framework in Java | Java Tutorial For Beginner...
Java Collections | Collections Framework in Java | Java Tutorial For Beginner...Java Collections | Collections Framework in Java | Java Tutorial For Beginner...
Java Collections | Collections Framework in Java | Java Tutorial For Beginner...Edureka!
 
Spring Framework
Spring Framework  Spring Framework
Spring Framework tola99
 
Basics of JAVA programming
Basics of JAVA programmingBasics of JAVA programming
Basics of JAVA programmingElizabeth Thomas
 
Java database connectivity with MySql
Java database connectivity with MySqlJava database connectivity with MySql
Java database connectivity with MySqlDhyey Dattani
 
Jdbc (database in java)
Jdbc (database in java)Jdbc (database in java)
Jdbc (database in java)Maher Abdo
 

Was ist angesagt? (20)

JDBC ppt
JDBC pptJDBC ppt
JDBC ppt
 
Java web application development
Java web application developmentJava web application development
Java web application development
 
JDBC – Java Database Connectivity
JDBC – Java Database ConnectivityJDBC – Java Database Connectivity
JDBC – Java Database Connectivity
 
Java DataBase Connectivity API (JDBC API)
Java DataBase Connectivity API (JDBC API)Java DataBase Connectivity API (JDBC API)
Java DataBase Connectivity API (JDBC API)
 
Introduction to EJB
Introduction to EJBIntroduction to EJB
Introduction to EJB
 
Java Basics
Java BasicsJava Basics
Java Basics
 
Spring jdbc dao
Spring jdbc daoSpring jdbc dao
Spring jdbc dao
 
Jdbc_ravi_2016
Jdbc_ravi_2016Jdbc_ravi_2016
Jdbc_ravi_2016
 
Jdbc architecture and driver types ppt
Jdbc architecture and driver types pptJdbc architecture and driver types ppt
Jdbc architecture and driver types ppt
 
Java Collections | Collections Framework in Java | Java Tutorial For Beginner...
Java Collections | Collections Framework in Java | Java Tutorial For Beginner...Java Collections | Collections Framework in Java | Java Tutorial For Beginner...
Java Collections | Collections Framework in Java | Java Tutorial For Beginner...
 
ADO.NET
ADO.NETADO.NET
ADO.NET
 
Ado.Net Tutorial
Ado.Net TutorialAdo.Net Tutorial
Ado.Net Tutorial
 
Java Servlets
Java ServletsJava Servlets
Java Servlets
 
Spring Framework
Spring Framework  Spring Framework
Spring Framework
 
Servlets
ServletsServlets
Servlets
 
JPA and Hibernate
JPA and HibernateJPA and Hibernate
JPA and Hibernate
 
Basics of JAVA programming
Basics of JAVA programmingBasics of JAVA programming
Basics of JAVA programming
 
Java database connectivity with MySql
Java database connectivity with MySqlJava database connectivity with MySql
Java database connectivity with MySql
 
Jdbc (database in java)
Jdbc (database in java)Jdbc (database in java)
Jdbc (database in java)
 
Spring Data JPA
Spring Data JPASpring Data JPA
Spring Data JPA
 

Andere mochten auch

Object+oriented+programming+in+java
Object+oriented+programming+in+javaObject+oriented+programming+in+java
Object+oriented+programming+in+javaYe Win
 
Java OOP Programming language (Part 7) - Swing
Java OOP Programming language (Part 7) - SwingJava OOP Programming language (Part 7) - Swing
Java OOP Programming language (Part 7) - SwingOUM SAOKOSAL
 
Java OOP Programming language (Part 8) - Java Database JDBC
Java OOP Programming language (Part 8) - Java Database JDBCJava OOP Programming language (Part 8) - Java Database JDBC
Java OOP Programming language (Part 8) - Java Database JDBCOUM SAOKOSAL
 
Java OOP Programming language (Part 6) - Abstract Class & Interface
Java OOP Programming language (Part 6) - Abstract Class & InterfaceJava OOP Programming language (Part 6) - Abstract Class & Interface
Java OOP Programming language (Part 6) - Abstract Class & InterfaceOUM SAOKOSAL
 
Android app development - Java Programming for Android
Android app development - Java Programming for AndroidAndroid app development - Java Programming for Android
Android app development - Java Programming for AndroidOUM SAOKOSAL
 
J2EE and layered architecture
J2EE and layered architectureJ2EE and layered architecture
J2EE and layered architectureSuman Behara
 
Practical OOP In Java
Practical OOP In JavaPractical OOP In Java
Practical OOP In Javawiradikusuma
 
Object oriented programming (oop) cs304 power point slides lecture 01
Object oriented programming (oop)   cs304 power point slides lecture 01Object oriented programming (oop)   cs304 power point slides lecture 01
Object oriented programming (oop) cs304 power point slides lecture 01Adil Kakakhel
 
Basic concepts of object oriented programming
Basic concepts of object oriented programmingBasic concepts of object oriented programming
Basic concepts of object oriented programmingSachin Sharma
 
Introduction to Object Oriented Programming
Introduction to Object Oriented ProgrammingIntroduction to Object Oriented Programming
Introduction to Object Oriented ProgrammingMoutaz Haddara
 
Java OOP s concepts and buzzwords
Java OOP s concepts and buzzwordsJava OOP s concepts and buzzwords
Java OOP s concepts and buzzwordsRaja Sekhar
 

Andere mochten auch (12)

Object+oriented+programming+in+java
Object+oriented+programming+in+javaObject+oriented+programming+in+java
Object+oriented+programming+in+java
 
Java OOP Programming language (Part 7) - Swing
Java OOP Programming language (Part 7) - SwingJava OOP Programming language (Part 7) - Swing
Java OOP Programming language (Part 7) - Swing
 
Java OOP Programming language (Part 8) - Java Database JDBC
Java OOP Programming language (Part 8) - Java Database JDBCJava OOP Programming language (Part 8) - Java Database JDBC
Java OOP Programming language (Part 8) - Java Database JDBC
 
Java OOP Programming language (Part 6) - Abstract Class & Interface
Java OOP Programming language (Part 6) - Abstract Class & InterfaceJava OOP Programming language (Part 6) - Abstract Class & Interface
Java OOP Programming language (Part 6) - Abstract Class & Interface
 
Android app development - Java Programming for Android
Android app development - Java Programming for AndroidAndroid app development - Java Programming for Android
Android app development - Java Programming for Android
 
J2ee architecture
J2ee architectureJ2ee architecture
J2ee architecture
 
J2EE and layered architecture
J2EE and layered architectureJ2EE and layered architecture
J2EE and layered architecture
 
Practical OOP In Java
Practical OOP In JavaPractical OOP In Java
Practical OOP In Java
 
Object oriented programming (oop) cs304 power point slides lecture 01
Object oriented programming (oop)   cs304 power point slides lecture 01Object oriented programming (oop)   cs304 power point slides lecture 01
Object oriented programming (oop) cs304 power point slides lecture 01
 
Basic concepts of object oriented programming
Basic concepts of object oriented programmingBasic concepts of object oriented programming
Basic concepts of object oriented programming
 
Introduction to Object Oriented Programming
Introduction to Object Oriented ProgrammingIntroduction to Object Oriented Programming
Introduction to Object Oriented Programming
 
Java OOP s concepts and buzzwords
Java OOP s concepts and buzzwordsJava OOP s concepts and buzzwords
Java OOP s concepts and buzzwords
 

Ähnlich wie Java database connectivity

java.pptx
java.pptxjava.pptx
java.pptxbfgd1
 
JDBC java for learning java for learn.ppt
JDBC java for learning java for learn.pptJDBC java for learning java for learn.ppt
JDBC java for learning java for learn.pptkingkolju
 
4-INTERDUCATION TO JDBC-2019.ppt
4-INTERDUCATION TO JDBC-2019.ppt4-INTERDUCATION TO JDBC-2019.ppt
4-INTERDUCATION TO JDBC-2019.pptNaveenKumar648465
 
Java Database Connectivity (JDBC)
Java Database Connectivity (JDBC)Java Database Connectivity (JDBC)
Java Database Connectivity (JDBC)Pooja Talreja
 
Jdbc connectivity
Jdbc connectivityJdbc connectivity
Jdbc connectivityarikazukito
 
Java Database Connectivity (Advanced programming)
Java Database Connectivity (Advanced programming)Java Database Connectivity (Advanced programming)
Java Database Connectivity (Advanced programming)Gera Paulos
 
chapter 5 java.pptx
chapter 5  java.pptxchapter 5  java.pptx
chapter 5 java.pptxBekiTube
 
Mobile Application Devlopement-Database connections-UNIT-5
Mobile Application Devlopement-Database connections-UNIT-5Mobile Application Devlopement-Database connections-UNIT-5
Mobile Application Devlopement-Database connections-UNIT-5Pallepati Vasavi
 
JDBC,Types of JDBC,Resultset, statements,PreparedStatement,CallableStatements...
JDBC,Types of JDBC,Resultset, statements,PreparedStatement,CallableStatements...JDBC,Types of JDBC,Resultset, statements,PreparedStatement,CallableStatements...
JDBC,Types of JDBC,Resultset, statements,PreparedStatement,CallableStatements...Pallepati Vasavi
 
1. java database connectivity (jdbc)
1. java database connectivity (jdbc)1. java database connectivity (jdbc)
1. java database connectivity (jdbc)Fad Zulkifli
 

Ähnlich wie Java database connectivity (20)

java.pptx
java.pptxjava.pptx
java.pptx
 
JDBC java for learning java for learn.ppt
JDBC java for learning java for learn.pptJDBC java for learning java for learn.ppt
JDBC java for learning java for learn.ppt
 
4-INTERDUCATION TO JDBC-2019.ppt
4-INTERDUCATION TO JDBC-2019.ppt4-INTERDUCATION TO JDBC-2019.ppt
4-INTERDUCATION TO JDBC-2019.ppt
 
Chap3 3 12
Chap3 3 12Chap3 3 12
Chap3 3 12
 
Java Database Connectivity (JDBC)
Java Database Connectivity (JDBC)Java Database Connectivity (JDBC)
Java Database Connectivity (JDBC)
 
Unit 5.pdf
Unit 5.pdfUnit 5.pdf
Unit 5.pdf
 
java 4 Part 1 computer science.pptx
java 4 Part 1 computer science.pptxjava 4 Part 1 computer science.pptx
java 4 Part 1 computer science.pptx
 
Jdbc connectivity
Jdbc connectivityJdbc connectivity
Jdbc connectivity
 
Java Database Connectivity (Advanced programming)
Java Database Connectivity (Advanced programming)Java Database Connectivity (Advanced programming)
Java Database Connectivity (Advanced programming)
 
Core jdbc basics
Core jdbc basicsCore jdbc basics
Core jdbc basics
 
3 jdbc
3 jdbc3 jdbc
3 jdbc
 
jdbc
jdbcjdbc
jdbc
 
JDBC
JDBCJDBC
JDBC
 
chapter 5 java.pptx
chapter 5  java.pptxchapter 5  java.pptx
chapter 5 java.pptx
 
Jdbc
JdbcJdbc
Jdbc
 
Assignment#10
Assignment#10Assignment#10
Assignment#10
 
jdbc
jdbcjdbc
jdbc
 
Mobile Application Devlopement-Database connections-UNIT-5
Mobile Application Devlopement-Database connections-UNIT-5Mobile Application Devlopement-Database connections-UNIT-5
Mobile Application Devlopement-Database connections-UNIT-5
 
JDBC,Types of JDBC,Resultset, statements,PreparedStatement,CallableStatements...
JDBC,Types of JDBC,Resultset, statements,PreparedStatement,CallableStatements...JDBC,Types of JDBC,Resultset, statements,PreparedStatement,CallableStatements...
JDBC,Types of JDBC,Resultset, statements,PreparedStatement,CallableStatements...
 
1. java database connectivity (jdbc)
1. java database connectivity (jdbc)1. java database connectivity (jdbc)
1. java database connectivity (jdbc)
 

Kürzlich hochgeladen

Call Girls Wakad Call Me 7737669865 Budget Friendly No Advance Booking
Call Girls Wakad Call Me 7737669865 Budget Friendly No Advance BookingCall Girls Wakad Call Me 7737669865 Budget Friendly No Advance Booking
Call Girls Wakad Call Me 7737669865 Budget Friendly No Advance Bookingroncy bisnoi
 
Call Girls Pimpri Chinchwad Call Me 7737669865 Budget Friendly No Advance Boo...
Call Girls Pimpri Chinchwad Call Me 7737669865 Budget Friendly No Advance Boo...Call Girls Pimpri Chinchwad Call Me 7737669865 Budget Friendly No Advance Boo...
Call Girls Pimpri Chinchwad Call Me 7737669865 Budget Friendly No Advance Boo...roncy bisnoi
 
VIP Call Girls Ankleshwar 7001035870 Whatsapp Number, 24/07 Booking
VIP Call Girls Ankleshwar 7001035870 Whatsapp Number, 24/07 BookingVIP Call Girls Ankleshwar 7001035870 Whatsapp Number, 24/07 Booking
VIP Call Girls Ankleshwar 7001035870 Whatsapp Number, 24/07 Bookingdharasingh5698
 
The Most Attractive Pune Call Girls Budhwar Peth 8250192130 Will You Miss Thi...
The Most Attractive Pune Call Girls Budhwar Peth 8250192130 Will You Miss Thi...The Most Attractive Pune Call Girls Budhwar Peth 8250192130 Will You Miss Thi...
The Most Attractive Pune Call Girls Budhwar Peth 8250192130 Will You Miss Thi...ranjana rawat
 
PVC VS. FIBERGLASS (FRP) GRAVITY SEWER - UNI BELL
PVC VS. FIBERGLASS (FRP) GRAVITY SEWER - UNI BELLPVC VS. FIBERGLASS (FRP) GRAVITY SEWER - UNI BELL
PVC VS. FIBERGLASS (FRP) GRAVITY SEWER - UNI BELLManishPatel169454
 
FULL ENJOY Call Girls In Mahipalpur Delhi Contact Us 8377877756
FULL ENJOY Call Girls In Mahipalpur Delhi Contact Us 8377877756FULL ENJOY Call Girls In Mahipalpur Delhi Contact Us 8377877756
FULL ENJOY Call Girls In Mahipalpur Delhi Contact Us 8377877756dollysharma2066
 
VIP Call Girls Palanpur 7001035870 Whatsapp Number, 24/07 Booking
VIP Call Girls Palanpur 7001035870 Whatsapp Number, 24/07 BookingVIP Call Girls Palanpur 7001035870 Whatsapp Number, 24/07 Booking
VIP Call Girls Palanpur 7001035870 Whatsapp Number, 24/07 Bookingdharasingh5698
 
Double rodded leveling 1 pdf activity 01
Double rodded leveling 1 pdf activity 01Double rodded leveling 1 pdf activity 01
Double rodded leveling 1 pdf activity 01KreezheaRecto
 
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXssuser89054b
 
Thermal Engineering-R & A / C - unit - V
Thermal Engineering-R & A / C - unit - VThermal Engineering-R & A / C - unit - V
Thermal Engineering-R & A / C - unit - VDineshKumar4165
 
Online banking management system project.pdf
Online banking management system project.pdfOnline banking management system project.pdf
Online banking management system project.pdfKamal Acharya
 
Booking open Available Pune Call Girls Pargaon 6297143586 Call Hot Indian Gi...
Booking open Available Pune Call Girls Pargaon  6297143586 Call Hot Indian Gi...Booking open Available Pune Call Girls Pargaon  6297143586 Call Hot Indian Gi...
Booking open Available Pune Call Girls Pargaon 6297143586 Call Hot Indian Gi...Call Girls in Nagpur High Profile
 
KubeKraft presentation @CloudNativeHooghly
KubeKraft presentation @CloudNativeHooghlyKubeKraft presentation @CloudNativeHooghly
KubeKraft presentation @CloudNativeHooghlysanyuktamishra911
 
Call Girls Walvekar Nagar Call Me 7737669865 Budget Friendly No Advance Booking
Call Girls Walvekar Nagar Call Me 7737669865 Budget Friendly No Advance BookingCall Girls Walvekar Nagar Call Me 7737669865 Budget Friendly No Advance Booking
Call Girls Walvekar Nagar Call Me 7737669865 Budget Friendly No Advance Bookingroncy bisnoi
 
Call for Papers - Educational Administration: Theory and Practice, E-ISSN: 21...
Call for Papers - Educational Administration: Theory and Practice, E-ISSN: 21...Call for Papers - Educational Administration: Theory and Practice, E-ISSN: 21...
Call for Papers - Educational Administration: Theory and Practice, E-ISSN: 21...Christo Ananth
 
CCS335 _ Neural Networks and Deep Learning Laboratory_Lab Complete Record
CCS335 _ Neural Networks and Deep Learning Laboratory_Lab Complete RecordCCS335 _ Neural Networks and Deep Learning Laboratory_Lab Complete Record
CCS335 _ Neural Networks and Deep Learning Laboratory_Lab Complete RecordAsst.prof M.Gokilavani
 
UNIT - IV - Air Compressors and its Performance
UNIT - IV - Air Compressors and its PerformanceUNIT - IV - Air Compressors and its Performance
UNIT - IV - Air Compressors and its Performancesivaprakash250
 
Generative AI or GenAI technology based PPT
Generative AI or GenAI technology based PPTGenerative AI or GenAI technology based PPT
Generative AI or GenAI technology based PPTbhaskargani46
 
Call Girls In Bangalore ☎ 7737669865 🥵 Book Your One night Stand
Call Girls In Bangalore ☎ 7737669865 🥵 Book Your One night StandCall Girls In Bangalore ☎ 7737669865 🥵 Book Your One night Stand
Call Girls In Bangalore ☎ 7737669865 🥵 Book Your One night Standamitlee9823
 

Kürzlich hochgeladen (20)

Call Girls Wakad Call Me 7737669865 Budget Friendly No Advance Booking
Call Girls Wakad Call Me 7737669865 Budget Friendly No Advance BookingCall Girls Wakad Call Me 7737669865 Budget Friendly No Advance Booking
Call Girls Wakad Call Me 7737669865 Budget Friendly No Advance Booking
 
Call Girls Pimpri Chinchwad Call Me 7737669865 Budget Friendly No Advance Boo...
Call Girls Pimpri Chinchwad Call Me 7737669865 Budget Friendly No Advance Boo...Call Girls Pimpri Chinchwad Call Me 7737669865 Budget Friendly No Advance Boo...
Call Girls Pimpri Chinchwad Call Me 7737669865 Budget Friendly No Advance Boo...
 
VIP Call Girls Ankleshwar 7001035870 Whatsapp Number, 24/07 Booking
VIP Call Girls Ankleshwar 7001035870 Whatsapp Number, 24/07 BookingVIP Call Girls Ankleshwar 7001035870 Whatsapp Number, 24/07 Booking
VIP Call Girls Ankleshwar 7001035870 Whatsapp Number, 24/07 Booking
 
The Most Attractive Pune Call Girls Budhwar Peth 8250192130 Will You Miss Thi...
The Most Attractive Pune Call Girls Budhwar Peth 8250192130 Will You Miss Thi...The Most Attractive Pune Call Girls Budhwar Peth 8250192130 Will You Miss Thi...
The Most Attractive Pune Call Girls Budhwar Peth 8250192130 Will You Miss Thi...
 
PVC VS. FIBERGLASS (FRP) GRAVITY SEWER - UNI BELL
PVC VS. FIBERGLASS (FRP) GRAVITY SEWER - UNI BELLPVC VS. FIBERGLASS (FRP) GRAVITY SEWER - UNI BELL
PVC VS. FIBERGLASS (FRP) GRAVITY SEWER - UNI BELL
 
FULL ENJOY Call Girls In Mahipalpur Delhi Contact Us 8377877756
FULL ENJOY Call Girls In Mahipalpur Delhi Contact Us 8377877756FULL ENJOY Call Girls In Mahipalpur Delhi Contact Us 8377877756
FULL ENJOY Call Girls In Mahipalpur Delhi Contact Us 8377877756
 
VIP Call Girls Palanpur 7001035870 Whatsapp Number, 24/07 Booking
VIP Call Girls Palanpur 7001035870 Whatsapp Number, 24/07 BookingVIP Call Girls Palanpur 7001035870 Whatsapp Number, 24/07 Booking
VIP Call Girls Palanpur 7001035870 Whatsapp Number, 24/07 Booking
 
Double rodded leveling 1 pdf activity 01
Double rodded leveling 1 pdf activity 01Double rodded leveling 1 pdf activity 01
Double rodded leveling 1 pdf activity 01
 
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
 
Thermal Engineering-R & A / C - unit - V
Thermal Engineering-R & A / C - unit - VThermal Engineering-R & A / C - unit - V
Thermal Engineering-R & A / C - unit - V
 
(INDIRA) Call Girl Bhosari Call Now 8617697112 Bhosari Escorts 24x7
(INDIRA) Call Girl Bhosari Call Now 8617697112 Bhosari Escorts 24x7(INDIRA) Call Girl Bhosari Call Now 8617697112 Bhosari Escorts 24x7
(INDIRA) Call Girl Bhosari Call Now 8617697112 Bhosari Escorts 24x7
 
Online banking management system project.pdf
Online banking management system project.pdfOnline banking management system project.pdf
Online banking management system project.pdf
 
Booking open Available Pune Call Girls Pargaon 6297143586 Call Hot Indian Gi...
Booking open Available Pune Call Girls Pargaon  6297143586 Call Hot Indian Gi...Booking open Available Pune Call Girls Pargaon  6297143586 Call Hot Indian Gi...
Booking open Available Pune Call Girls Pargaon 6297143586 Call Hot Indian Gi...
 
KubeKraft presentation @CloudNativeHooghly
KubeKraft presentation @CloudNativeHooghlyKubeKraft presentation @CloudNativeHooghly
KubeKraft presentation @CloudNativeHooghly
 
Call Girls Walvekar Nagar Call Me 7737669865 Budget Friendly No Advance Booking
Call Girls Walvekar Nagar Call Me 7737669865 Budget Friendly No Advance BookingCall Girls Walvekar Nagar Call Me 7737669865 Budget Friendly No Advance Booking
Call Girls Walvekar Nagar Call Me 7737669865 Budget Friendly No Advance Booking
 
Call for Papers - Educational Administration: Theory and Practice, E-ISSN: 21...
Call for Papers - Educational Administration: Theory and Practice, E-ISSN: 21...Call for Papers - Educational Administration: Theory and Practice, E-ISSN: 21...
Call for Papers - Educational Administration: Theory and Practice, E-ISSN: 21...
 
CCS335 _ Neural Networks and Deep Learning Laboratory_Lab Complete Record
CCS335 _ Neural Networks and Deep Learning Laboratory_Lab Complete RecordCCS335 _ Neural Networks and Deep Learning Laboratory_Lab Complete Record
CCS335 _ Neural Networks and Deep Learning Laboratory_Lab Complete Record
 
UNIT - IV - Air Compressors and its Performance
UNIT - IV - Air Compressors and its PerformanceUNIT - IV - Air Compressors and its Performance
UNIT - IV - Air Compressors and its Performance
 
Generative AI or GenAI technology based PPT
Generative AI or GenAI technology based PPTGenerative AI or GenAI technology based PPT
Generative AI or GenAI technology based PPT
 
Call Girls In Bangalore ☎ 7737669865 🥵 Book Your One night Stand
Call Girls In Bangalore ☎ 7737669865 🥵 Book Your One night StandCall Girls In Bangalore ☎ 7737669865 🥵 Book Your One night Stand
Call Girls In Bangalore ☎ 7737669865 🥵 Book Your One night Stand
 

Java database connectivity

  • 2. What is JDBC? • 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 library includes APIs for each of the tasks mentioned below that are commonly associated with database usage.
  • 3. • Making a connection to a database. • Creating SQL or MySQL statements. • Executing SQL or MySQL queries in the database. • Viewing & Modifying the resulting records.
  • 4. • JDBC is a specification that provides a complete set of interfaces that allows for portable access to an underlying database. Java can be used to write different types of executables, such as − – Java Applications – Java Applets – Java Servlets – Java ServerPages (JSPs) – Enterprise JavaBeans (EJBs).
  • 5. • All of these different executables are able to use a JDBC driver to access a database, and take advantage of the stored data.
  • 6. JDBC Architecture • The JDBC API supports both two-tier and three-tier processing models for database access but in general, JDBC Architecture consists of two layers − – JDBC API: This provides the application-to- JDBC Manager connection. – JDBC Driver API: This supports the JDBC Manager-to-Driver Connection.
  • 7. • The JDBC API uses a driver manager and database-specific drivers to provide transparent connectivity to databases. • The JDBC driver manager ensures that the correct driver is used to access each data source. • The driver manager is capable of supporting multiple concurrent drivers connected to multiple databases.
  • 8.
  • 9. 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.
  • 10. – 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.
  • 11. – 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.
  • 12. – 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.
  • 13. – 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.
  • 14. – SQLException: This class handles any errors that occur in a database application.
  • 15. • Create Database – The CREATE DATABASE statement is used for creating a new database. • SQL> CREATE DATABASE EMP; • Drop Database – The DROP DATABASE statement is used for deleting an existing database. The syntax is − – SQL> DROP DATABASE DATABASE_NAME;
  • 16. Create table SQL> CREATE TABLE Employees ( id INT NOT NULL, age INT NOT NULL, first VARCHAR(255), last VARCHAR(255), PRIMARY KEY ( id ) );
  • 17. INSERT Data – SQL> INSERT INTO Employees VALUES (100, 18, 'Zara', 'Ali');
  • 18. SELECT Data • SQL> SELECT first, last, age FROM Employees WHERE id = 100;
  • 19. UPDATE Data • SQL> UPDATE Employees SET age=20 WHERE id=100;
  • 20. DELETE Data • SQL> DELETE FROM Employees WHERE id=100;
  • 21. Creating 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.
  • 22. • 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.
  • 23. • 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.
  • 24. //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";
  • 25. 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);
  • 26. //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");
  • 27. //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){
  • 28. //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
  • 29. What is JDBC Driver? • JDBC drivers implement the defined interfaces in the JDBC API, for interacting with your database server. • For example, using JDBC drivers enable you to open database connections and to interact with it by sending SQL or database commands then receiving results with Java. • The Java.sql package that ships with JDK, contains various classes with their behaviours defined and their actual implementaions are done in third-party drivers. Third party vendors implements the java.sql.Driver interface in their database driver.
  • 30. JDBC Drivers Types • JDBC driver implementations vary because of the wide variety of operating systems and hardware platforms in which Java operates. Sun has divided the implementation types into four categories
  • 31. Type 1: JDBC-ODBC Bridge Driver • In a Type 1 driver, a JDBC bridge is used to access ODBC drivers installed on each client machine. Using ODBC, requires configuring on your system a Data Source Name (DSN) that represents the target database. • When Java first came out, this was a useful driver because most databases only supported ODBC access but now this type of driver is recommended only for experimental use or when no other alternative is available.
  • 32.
  • 33. • The JDBC-ODBC Bridge that comes with JDK 1.2 is a good example of this kind of driver.
  • 34. Type 2: JDBC-Native API • n a Type 2 driver, JDBC API calls are converted into native C/C++ API calls, which are unique to the database. These drivers are typically provided by the database vendors and used in the same manner as the JDBC-ODBC Bridge. The vendor-specific driver must be installed on each client machine. • If we change the Database, we have to change the native API, as it is specific to a database and they are mostly obsolete now, but you may realize some speed increase with a Type 2 driver, because it eliminates ODBC's overhead.
  • 35.
  • 36. • The Oracle Call Interface (OCI) driver is an example of a Type 2 driver.
  • 37. Type 3: JDBC-Net pure Java • In a Type 3 driver, a three-tier approach is used to access databases. The JDBC clients use standard network sockets to communicate with a middleware application server. The socket information is then translated by the middleware application server into the call format required by the DBMS, and forwarded to the database server. • This kind of driver is extremely flexible, since it requires no code installed on the client and a single driver can actually provide access to multiple databases.
  • 38.
  • 39. • You can think of the application server as a JDBC "proxy," meaning that it makes calls for the client application. As a result, you need some knowledge of the application server's configuration in order to effectively use this driver type.
  • 40. Type 4: 100% Pure Java • In a Type 4 driver, a pure Java-based driver communicates directly with the vendor's database through socket connection. This is the highest performance driver available for the database and is usually provided by the vendor itself. • This kind of driver is extremely flexible, you don't need to install special software on the client or server. Further, these drivers can be downloaded dynamically.
  • 41.
  • 42. • MySQL's Connector/J driver is a Type 4 driver. Because of the proprietary nature of their network protocols, database vendors usually supply type 4 drivers.
  • 43. Which Driver should be 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 purposes only.
  • 44. JDBC - Database Connections • Import JDBC Packages: Add import statements to your Java program to import required classes in your Java code. • Register JDBC Driver: This step causes the JVM to load the desired driver implementation into memory so it can fulfill your JDBC requests.
  • 45. • Database URL Formulation: This is to create a properly formatted address that points to the database to which you wish to connect. • Create Connection Object: Finally, code a call to the DriverManager object's getConnection( ) method to establish actual database connection.
  • 46. Import JDBC Packages • import java.sql.* ; // for standard JDBC programs • import java.math.* ; // for BigDecimal and BigInteger support
  • 47. Register JDBC Driver • You must register the driver in your program before you use it. Registering the driver is the process by which the Oracle driver's class file is loaded into the memory, so it can be utilized as an implementation of the JDBC interfaces. • (only ones)
  • 48. Approach I - Class.forName() • The most common approach to register a driver is to use Java's Class.forName() method, to dynamically load the driver's class file into memory, which automatically registers it. • This method is preferable because it allows you to make the driver registration configurable and portable.
  • 49. try { Class.forName("oracle.jdbc.driver.OracleDriver").newIn stance(); } catch(ClassNotFoundException ex) { System.out.println("Error: unable to load driver class!"); System.exit(1); catch(IllegalAccessException ex) { System.out.println("Error: access problem while loading!"); System.exit(2); catch(InstantiationException ex) { System.out.println("Error: unable to instantiate driver!"); System.exit(3); }
  • 50. Approach II - DriverManager.registerDriver() • The second approach you can use to register a driver, is to use the static DriverManager.registerDriver() method. • You should use the registerDriver() method if you are using a non-JDK compliant JVM, such as the one provided by Microsoft.
  • 51. try { Driver myDriver = new oracle.jdbc.driver.OracleDriver(); DriverManager.registerDriver( myDriver ); } catch(ClassNotFoundException ex) { System.out.println("Error: unable to load driver class!"); System.exit(1); }
  • 52. Database URL Formulation • After you've loaded the driver, you can establish a connection using the DriverManager.getConnection() method. • three overloaded DriverManager.getConnection() methods − – getConnection(String url) – getConnection(String url, Properties prop) – getConnection(String url, String user, String password)
  • 53. • A database URL is an address that points to your database. RDBMS JDBC driver name URL format MySQL com.mysql.jdbc.Driver jdbc:mysql://hostname/ databaseName ORACLE oracle.jdbc.driver.OracleDriver jdbc:oracle:thin:@hostname:port Number:databaseName DB2 COM.ibm.db2.jdbc.net.DB2Driv er jdbc:db2:hostname:port Number/databaseName Sybase com.sybase.jdbc.SybDriver jdbc:sybase:Tds:hostname: port Number/databaseName
  • 54. Create Connection Object • Using a Database URL with a username and password String URL = "jdbc:oracle:thin:@amrood:1521:EMP"; String USER = "username"; String PASS = "password" Connection conn = DriverManager.getConnection(URL, USER, PASS);
  • 55. • Using Only a Database URL String URL = "jdbc:oracle:thin:username/password@amrood:1521:EMP"; Connection conn = DriverManager.getConnection(URL);
  • 56. Using a Database URL and a Properties Object import java.util.*; String URL = "jdbc:oracle:thin:@amrood:1521:EMP"; Properties info = new Properties( ); info.put( "user", "username" ); info.put( "password", "password" ); Connection conn = DriverManager.getConnection(URL, info);
  • 57. Closing JDBC Connections • At the end of your JDBC program, it is required explicitly to close all the connections to the database to end each database session. • You should make a habit of always closing the connection with the close() method associated with connection object. • To ensure that a connection is closed, you could provide a 'finally' block in your code. A finally block always executes, regardless of an exception occurs or not. conn.close();
  • 58. Statements, PreparedStatement and CallableStatement • Once a connection is obtained we can interact with the database. The JDBC Statement, CallableStatement, and PreparedStatement interfaces define the methods and properties that enable you to send SQL or PL/SQL commands and receive data from your database. • They also define methods that help bridge data type differences between Java and SQL data types used in a database.
  • 59. Interfaces Recommended Use Statement Use the for general-purpose access to your database. Useful when you are using static SQL statements at runtime. The Statement interface cannot accept parameters. 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.
  • 61. //STEP 1. Import required packages import java.sql.*; public class JDBCExample { // 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;
  • 62. 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,P ASS);
  • 63. //STEP 4: Execute a query System.out.println("Creating statement..."); stmt = conn.createStatement(); String sql = "UPDATE Employees set age=30 WHERE id=103"; // Let us check if it returns a true Result Set or not. Boolean ret = stmt.execute(sql); System.out.println("Return value is : " + ret.toString() ); // Let us update age of the record with ID = 103; int rows = stmt.executeUpdate(sql); System.out.println("Rows impacted : " + rows ); // Let us select all the records and display them. sql = "SELECT id, first, last, age FROM Employees"; ResultSet rs = stmt.executeQuery(sql);
  • 64. //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); }
  • 65. //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{
  • 66. if(conn!=null) conn.close(); }catch(SQLException se){ se.printStackTrace(); }//end finally try }//end try System.out.println("Goodbye!"); }//end main } //end JDBCExample
  • 68. //STEP 4: Execute a query System.out.println("Creating statement..."); String sql = "UPDATE Employees set age=? WHERE id=?"; stmt = conn.prepareStatement(sql); //Bind values into the parameters. stmt.setInt(1, 35); // This would set age stmt.setInt(2, 102); // This would set ID // Let us update age of the record with ID = 102; int rows = stmt.executeUpdate(); System.out.println("Rows impacted : " + rows ); // Let us select all the records and display them. sql = "SELECT id, first, last, age FROM Employees"; ResultSet rs = stmt.executeQuery(sql);
  • 69. callbackstatement Three types of parameters exist: IN, OUT, and INOUT. The PreparedStatement object only uses the IN parameter. The CallableStatement object can use all the three.
  • 70. Parameter Description IN A parameter whose value is unknown when the SQL statement is created. You bind values to IN parameters with the setXXX() methods. OUT A parameter whose value is supplied by the SQL statement it returns. You retrieve values from theOUT parameters with the getXXX() methods. INOUT A parameter that provides both input and output values. You bind variables with the setXXX() methods and retrieve values with the getXXX() methods.
  • 71. • Make sure you have created this stored procedure in your EMP Database. You can use MySQL Query Browser to get it done. DELIMITER $$ DROP PROCEDURE IF EXISTS `EMP`.`getEmpName` $$ CREATE PROCEDURE `EMP`.`getEmpName` (IN EMP_ID INT, OUT EMP_FIRST VARCHAR(255)) BEGIN SELECT first INTO EMP_FIRST FROM Employees WHERE ID = EMP_ID; END $$ DELIMITER ;
  • 72. //STEP 4: Execute a query System.out.println("Creating statement..."); String sql = "{call getEmpName (?, ?)}"; stmt = conn.prepareCall(sql); //Bind IN parameter first, then bind OUT parameter int empID = 102; stmt.setInt(1, empID); // This would set ID as 102 // Because second parameter is OUT so register it stmt.registerOutParameter(2, java.sql.Types.VARCHAR); //Use execute method to run stored procedure. System.out.println("Executing stored procedure..." ); stmt.execute(); //Retrieve employee name with getXXX method String empName = stmt.getString(2); System.out.println("Emp Name with ID:" + empID + " is " + empName); stmt.close(); conn.close();
  • 73. JDBC - Result Sets • The SQL statements that read data from a database query, return the data in a result set. The SELECT statement is the standard way to select rows from a database and view them in a result set. The java.sql.ResultSet interface represents the result set of a database query. • A ResultSet object maintains a cursor that points to the current row in the result set. The term "result set" refers to the row and column data contained in a ResultSet object.
  • 74. • The methods of the ResultSet interface can be broken down into three categories − – Navigational methods: Used to move the cursor around. – Get methods: Used to view the data in the columns of the current row being pointed by the cursor. – Update methods: Used to update the data in the columns of the current row. The updates can then be updated in the underlying database as well.
  • 75. • The cursor is movable based on the properties of the ResultSet. These properties are designated when the corresponding Statement that generates the ResultSet is created.
  • 76. • JDBC provides the following connection methods to create statements with desired ResultSet − – createStatement(int RSType, int RSConcurrency); – prepareStatement(String SQL, int RSType, int RSConcurrency); – prepareCall(String sql, int RSType, int RSConcurrency); • The first argument indicates the type of a ResultSet object and the second argument is one of two ResultSet constants for specifying whether a result set is read-only or updatable.
  • 77. Type of ResultSet • If you do not specify any ResultSet type, you will automatically get one that is TYPE_FORWARD_ONLY.
  • 78. Type Description ResultSet.TYPE_FORWARD_ONLY The cursor can only move forward in the result set. ResultSet.TYPE_SCROLL_INSENSITI VE The cursor can scroll forward and backward, and the result set is not sensitive to changes made by others to the database that occur after the result set was created. ResultSet.TYPE_SCROLL_SENSITIV E. The cursor can scroll forward and backward, and the result set is sensitive to changes made by others to the database that occur after the result set was created.
  • 79. Concurrency of ResultSet • If you do not specify any Concurrency type, you will automatically get one that is CONCUR_READ_ONLY.
  • 80. Concurrency Description ResultSet.CONCUR_READ_ONLY Creates a read-only result set. This is the default ResultSet.CONCUR_UPDATABLE Creates an updateable result set.
  • 81. try { Statement stmt = conn.createStatement( ResultSet.TYPE_FOR WARD_ONLY, ResultSet.CONCUR_READ_ONLY); } catch(Exception ex) { .... } finally { .... }
  • 82. Navigating a Result Set • There are several methods in the ResultSet interface that involve moving the cursor,
  • 83. S.N. Methods & Description 1 public void beforeFirst() throws SQLExceptionMoves the cursor just before the first row. 2 public void afterLast() throws SQLExceptionMoves the cursor just after the last row. 3 public boolean first() throws SQLExceptionMoves the cursor to the first row. 4 public void last() throws SQLExceptionMoves the cursor to the last row. 5 public boolean absolute(int row) throws SQLExceptionMoves the cursor to the specified row. 6 public boolean relative(int row) throws SQLExceptionMoves the cursor the given number of rows forward or backward, from where it is currently pointing. 7 public boolean previous() throws SQLExceptionMoves the cursor to the previous row. This method returns false if the previous row is off the result set. 8 public boolean next() throws SQLExceptionMoves the cursor to the next row. This method returns false if there are no more rows in the result set. 9 public int getRow() throws SQLExceptionReturns the row number that the cursor is pointing to. 10 public void moveToInsertRow() throws SQLExceptionMoves the cursor to a special row in the result set that can be used to insert a new row into the database. The current cursor location is remembered. 11 public void moveToCurrentRow() throws SQLExceptionMoves the cursor back to the current row if the cursor is currently at the insert row; otherwise, this method does nothing
  • 84. • System.out.println("Creating statement..."); • stmt = conn.createStatement( ResultSet.TYPE_SCROLL_INSENSITI VE, ResultSet.CONCUR_READ_ONLY); • String sql; • sql = "SELECT id, first, last, age FROM Employees"; • ResultSet rs = stmt.executeQuery(sql); • // Move cursor to the last row. • System.out.println("Moving cursor to the last..."); • rs.last();
  • 85. //STEP 5: Extract data from result set System.out.println("Displaying record..."); //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);
  • 87. Viewing a Result Set • The ResultSet interface contains dozens of methods for getting the data of the current row. • There is a get method for each of the possible data types, and each get method has two versions − – One that takes in a column name. – One that takes in a column index.
  • 88. S.N. Methods & Description 1 public int getInt(String columnName) throws SQLExceptionReturns the int in the current row in the column named columnName. 2 public int getInt(int columnIndex) throws SQLExceptionReturns the int in the current row in the specified column index. The column index starts at 1, meaning the first column of a row is 1, the second column of a row is 2, and so on.
  • 89. • Similarly, there are get methods in the ResultSet interface for each of the eight Java primitive types, as well as common types such as java.lang.String, java.lang.Object, and java.net.URL. • There are also methods for getting SQL data types java.sql.Date, java.sql.Time, java.sql.TimeStamp, java.sql.Clob, and java.sql.Blob
  • 90. Updating a Result Set • The ResultSet interface contains a collection of update methods for updating the data of a result set. • As with the get methods, there are two update methods for each data type − – One that takes in a column name. – One that takes in a column index.
  • 91. S.N. Methods & Description 1 public void updateString(int columnIndex, String s) throws SQLExceptionChanges the String in the specified column to the value of s. 2 public void updateString(String columnName, String s) throws SQLExceptionSimilar to the previous method, except that the column is specified by its name instead of its index.
  • 92. • Updating a row in the result set changes the columns of the current row in the ResultSet object, but not in the underlying database. To update your changes to the row in the database, you need to invoke one of the following methods.
  • 93. S.N. Methods & Description 1 public void updateRow()Updates the current row by updating the corresponding row in the database. 2 public void deleteRow()Deletes the current row from the database 3 public void refreshRow()Refreshes the data in the result set to reflect any recent changes in the database. 4 public void cancelRowUpdates()Cancels any updates made on the current row. 5 public void insertRow()Inserts a row into the database. This method can only be invoked when the cursor is pointing to the insert row.
  • 94. System.out.println("Creating statement..."); Statement stmt = conn.createStatement( ResultSet.TYPE_SCROLL_INSENSITI VE, ResultSet.CONCUR_UPDATABLE); //STEP 5: Execute a query String sql = "SELECT id, first, last, age FROM Employees"; ResultSet rs = stmt.executeQuery(sql); System.out.println("List result set for reference...."); printRs(rs); //STEP 6: Loop through result set and add 5 in age //Move to BFR postion so while-loop works properly rs.beforeFirst();
  • 95. //STEP 7: Extract data from result set while(rs.next()){ //Retrieve by column name int newAge = rs.getInt("age") + 5; rs.updateDouble( "age", newAge ); rs.updateRow(); } System.out.println("List result set showing new ages..."); printRs(rs); // Insert a record into the table. //Move to insert row and add column data with updateXXX() System.out.println("Inserting a new record..."); rs.moveToInsertRow();
  • 96. rs.updateInt("id",104); rs.updateString("first","John"); rs.updateString("last","Paul"); rs.updateInt("age",40); //Commit row rs.insertRow(); System.out.println("List result set showing new set..."); printRs(rs); // Delete second record from the table. // Set position to second record first rs.absolute( 2 ); System.out.println("List the record before deleting..."); //Retrieve by column name int id = rs.getInt("id"); int age = rs.getInt("age"); String first = rs.getString("first"); String last = rs.getString("last"); System.out.print("ID: " + id); System.out.print(", Age: " + age); System.out.print(", First: " + first); System.out.println(", Last: " + last); //Delete row rs.deleteRow();
  • 97. JDBC - Data Type • The JDBC driver converts the Java data type to the appropriate JDBC type, before sending it to the database. It uses a default mapping for most data types. For example, a Java int is converted to an SQL INTEGER. Default mappings were created to provide consistency between drivers.
  • 98. • In Next slide : table summarizes the default JDBC data type that the Java data type is converted to, when you call the setXXX() method of the PreparedStatement or CallableStatement object or the ResultSet.updateXXX() method.
  • 99. SQL JDBC/Java setXXX getXXX VARCHAR java.lang.String setString getString CHAR java.lang.String setString getString LONGVARCHAR java.lang.String setString getString BIT boolean setBoolean getBoolean NUMERIC java.math.BigDeci mal setBigDecimal getBigDecimal TINYINT byte setByte getByte SMALLINT short setShort getShort INTEGER int setInt getInt BIGINT long setLong getLong REAL float setFloat getFloat FLOAT float setFloat getFloat
  • 100. DOUBLE double setDouble getDouble VARBINARY byte[ ] setBytes getBytes BINARY byte[ ] setBytes getBytes DATE java.sql.Date setDate getDate TIME java.sql.Time setTime getTime TIMESTAMP java.sql.Timestam p setTimestamp getTimestamp CLOB java.sql.Clob setClob getClob BLOB java.sql.Blob setBlob getBlob ARRAY java.sql.Array setARRAY getARRAY REF java.sql.Ref SetRef getRef STRUCT java.sql.Struct SetStruct getStruct
  • 101. Date & Time Data Types • The java.sql.Date class maps to the SQL DATE type, and the java.sql.Time and java.sql.Timestamp classes map to the SQL TIME and SQL TIMESTAMP data types, respectively.
  • 102. public class SqlDateTime { public static void main(String[] args) { //Get standard date and time java.util.Date javaDate = new java.util.Date(); long javaTime = javaDate.getTime(); System.out.println("The Java Date is:" + javaDate.toString()); //Get and display SQL DATE java.sql.Date sqlDate = new java.sql.Date(javaTime); System.out.println("The SQL DATE is: " + sqlDate.toString()); //Get and display SQL TIME java.sql.Time sqlTime = new java.sql.Time(javaTime); System.out.println("The SQL TIME is: " + sqlTime.toString()); //Get and display SQL TIMESTAMP java.sql.Timestamp sqlTimestamp = new java.sql.Timestamp(javaTime); System.out.println("The SQL TIMESTAMP is: " + sqlTimestamp.toString()); }//end main }//end SqlDateTime
  • 103. Handling NULL Values • SQL's use of NULL values and Java's use of null are different concepts. So, to handle SQL NULL values in Java, there are three tactics you can use − – Avoid using getXXX( ) methods that return primitive data types. – Use wrapper classes for primitive data types, and use the ResultSet object's wasNull( ) method to test whether the wrapper class variable that received the value returned by the getXXX( ) method should be set to null. – Use primitive data types and the ResultSet object's wasNull( ) method to test whether the primitive variable that received the value returned by the getXXX( ) method should be set to an acceptable value that you've chosen to represent a NULL.
  • 104. Example Statement stmt = conn.createStatement( ); String sql = "SELECT id, first, last, age FROM Employees"; ResultSet rs = stmt.executeQuery(sql); int id = rs.getInt(1); if( rs.wasNull( ) ) { id = 0; }
  • 105. Remaining topics • Transaction • Exceptin • Batch processing • Stored Procedure • Streaming Data