0% found this document useful (0 votes)
25 views24 pages

JD BC Connection

The document provides an overview of JDBC (Java Database Connectivity), which is an API that allows Java programs to connect to and interact with databases. It discusses the basic architecture and steps to connect to a database, execute SQL statements, retrieve results, and close connections. The document also covers more advanced JDBC topics like transactions, metadata, scrollable and updatable result sets.

Uploaded by

kavita.mittal
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
25 views24 pages

JD BC Connection

The document provides an overview of JDBC (Java Database Connectivity), which is an API that allows Java programs to connect to and interact with databases. It discusses the basic architecture and steps to connect to a database, execute SQL statements, retrieve results, and close connections. The document also covers more advanced JDBC topics like transactions, metadata, scrollable and updatable result sets.

Uploaded by

kavita.mittal
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
You are on page 1/ 24

JDBC –

Java DataBase Connectivity

By
Hridya G
Asst.Professor
Dept.of Computer Science
RSM SNDP Yogam Arts & Science
College,Koyilandy
What is JDBC?

• “An API that lets you access virtually any tabular data source from the
Java programming language”
• JDBC Data Access API – JDBC Technology Homepage
• What’s an API?
• See J2SE documentation

• What’s a tabular data source?


• “… access virtually any data source, from relational databases to
spreadsheets and flat files.”
• JDBC Documentation
• We’ll focus on accessing Oracle databases

2
General Architecture

• What design pattern is


implied in this architecture?
• What does it buy for us?
• Why is this architecture also
multi-tiered?

3
4
Basic steps to use
a database in Java

• 1.Establish a connection
• 2.Create JDBC Statements
• 3.Execute SQL Statements
• 4.GET ResultSet
• 5.Close connections

5
1. Establish a connection
• import java.sql.*;
• Load the vendor specific driver
• Class.forName("oracle.jdbc.driver.OracleDriver");
• What do you think this statement does, and how?
• Dynamically loads a driver class, for Oracle database
• Make the connection
• Connection con =
DriverManager.getConnection( "jdbc:oracle:thin:@oracle-
prod:1521:OPROD", username, passwd);
• What do you think this statement does?
• Establishes connection to database by obtaining
a Connection object 6
2. Create JDBC statement(s)

• Statement stmt = con.createStatement() ;


• Creates a Statement object for sending SQL statements
to the database

7
Executing SQL Statements

• String createLehigh = "Create table Lehigh " +


"(SSN Integer not null, Name VARCHAR(32), " + "Marks
Integer)";
stmt.executeUpdate(createLehigh);
//What does this statement do?

• String insertLehigh = "Insert into Lehigh values“ +


"(123456789,abc,100)";
stmt.executeUpdate(insertLehigh);

8
Get ResultSet
String queryLehigh = "select * from Lehigh";

ResultSet rs = Stmt.executeQuery(queryLehigh);
//What does this statement do?

while (rs.next()) {
int ssn = rs.getInt("SSN");
String name = rs.getString("NAME");
int marks = rs.getInt("MARKS");
}
9
Close connection

• stmt.close();
• con.close();

10
Transactions and JDBC

• JDBC allows SQL statements to be grouped together into a single


transaction
• Transaction control is performed by the Connection object, default mode
is auto-commit, I.e., each sql statement is treated as a transaction
• We can turn off the auto-commit mode with con.setAutoCommit(false);
• And turn it back on with con.setAutoCommit(true);
• Once auto-commit is off, no SQL statement will be committed until an
explicit is invoked con.commit();
• At this point all changes done by the SQL statements will be made
permanent in the database.

11
Handling Errors with Exceptions

• Programs should recover and leave the database in a


consistent state.
• If a statement in the try block throws an exception or
warning, it can be caught in one of the corresponding
catch statements
• How might a finally {…} block be helpful here?
• E.g., you could rollback your transaction in a
catch { …} block or close database connection and free
database related resources in finally {…} block
12
Another way to access database
(JDBC-ODBC)

What’s a bit different


about this
architecture?

Why add yet


another layer?

13
Sample program
import java.sql.*;
class Test {
public static void main(String[] args) {
try {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); //dynamic loading of driver
String filename = "c:/db1.mdb"; //Location of an Access database
String database = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=";
database+= filename.trim() + ";DriverID=22;READONLY=true}"; //add on to end
Connection con = DriverManager.getConnection( database ,"","");
Statement s = con.createStatement();
s.execute("create table TEST12345 ( firstcolumn integer )");
s.execute("insert into TEST12345 values(1)");
s.execute("select firstcolumn from TEST12345");

14
Sample program(cont)

ResultSet rs = s.getResultSet();
if (rs != null) // if rs == null, then there is no ResultSet to view
while ( rs.next() ) // this will step through our data row-by-row
{ /* the next line will get the first column in our current row's ResultSet
as a String ( getString( columnNumber) ) and output it to the screen */
System.out.println("Data from column_name: " + rs.getString(1) );
}
s.close(); // close Statement to let the database know we're done with it
con.close(); //close connection
}
catch (Exception err) { System.out.println("ERROR: " + err); }
}
}

15
Mapping types JDBC - Java

16
JDBC 2 – Scrollable Result Set


Statement stmt =
con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_READ_ONLY);

String query = “select students from class where type=‘not sleeping’ “;


ResultSet rs = stmt.executeQuery( query );

rs.previous(); / / go back in the RS (not possible in JDBC 1…)


rs.relative(-5); / / go 5 records back
rs.relative(7); / / go 7 records forward
rs.absolute(100); / / go to 100th record

17
JDBC 2 – Updateable ResultSet


Statement stmt =
con.createStatement(ResultSet.TYPE_FORWARD_ONLY,
ResultSet.CONCUR_UPDATABLE);
String query = " select students, grade from class
where type=‘really listening this presentation’ “;
ResultSet rs = stmt.executeQuery( query );

while ( rs.next() )
{
int grade = rs.getInt(“grade”);
rs.updateInt(“grade”, grade+10);
rs.updateRow();
}

18
Metadata from DB

• A Connection's database is able


to provide schema information
describing its tables,
its supported SQL grammar,
its stored procedures
the capabilities of this connection, and so on
• What is a stored procedure?
• Group of SQL statements that form a logical unit and perform a
particular task
This information is made available through
a DatabaseMetaData object.
19
Metadata from DB - example


Connection con = …. ;

DatabaseMetaData dbmd = con.getMetaData();

String catalog = null;


String schema = null;
String table = “sys%”;
String[ ] types = null;

ResultSet rs =
dbmd.getTables(catalog , schema , table , types );

20
JDBC – Metadata from RS
public static void printRS(ResultSet rs) throws SQLException
{
ResultSetMetaData md = rs.getMetaData();
// get number of columns
int nCols = md.getColumnCount();
// print column names
for(int i=1; i < nCols; ++i)
System.out.print( md.getColumnName( i)+",");
/ / output resultset
while ( rs.next() )
{ for(int i=1; i < nCols; ++i)
System.out.print( rs.getString( i)+",");
System.out.println( rs.getString(nCols) );
} 21

}
JDBC and beyond

• (JNDI) Java Naming and Directory Interface


• API for network-wide sharing of information about users, machines, networks,
services, and applications
• Preserves Java’s object model
• (JDO) Java Data Object
• Models persistence of objects, using RDBMS as repository
• Save, load objects from RDBMS
• (SQLJ) Embedded SQL in Java
• Standardized and optimized by Sybase, Oracle and IBM
• Java extended with directives: # sql
• SQL routines can invoke Java methods
• Maps SQL types to Java classes

22
JDBC references

• JDBC Data Access API – JDBC Technology Homepage


• http://java.sun.com/products/jdbc/index.html
• JDBC Database Access – The Java Tutorial
• http://java.sun.com/docs/books/tutorial/jdbc/index.html
• JDBC Documentation
• http://java.sun.com/j2se/1.4.2/docs/guide/jdbc/index.html
• java.sql package
• http://java.sun.com/j2se/1.4.2/docs/api/java/sql/package-summary.html
• JDBC Technology Guide: Getting Started
• http://java.sun.com/j2se/1.4.2/docs/guide/jdbc/getstart/GettingStartedTOC.fm.html

• JDBC API Tutorial and Reference (book)


• http://java.sun.com/docs/books/jdbc/

24
JDBC

• JDBC Data Access API – JDBC Technology Homepage


• http://java.sun.com/products/jdbc/index.html
• JDBC Database Access – The Java Tutorial
• http://java.sun.com/docs/books/tutorial/jdbc/index.html
• JDBC Documentation
• http://java.sun.com/j2se/1.4.2/docs/guide/jdbc/index.html
• java.sql package
• http://java.sun.com/j2se/1.4.2/docs/api/java/sql/package-summary.html
• JDBC Technology Guide: Getting Started
• http://java.sun.com/j2se/1.4.2/docs/guide/jdbc/getstart/GettingStartedTOC.fm.html

• JDBC API Tutorial and Reference (book)


• http://java.sun.com/docs/books/jdbc/

25

You might also like

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy