Presentation is loading. Please wait.

Presentation is loading. Please wait.

Java Access to RDB Relational databases (RDBs) dominate today, due to:

Similar presentations


Presentation on theme: "Java Access to RDB Relational databases (RDBs) dominate today, due to:"— Presentation transcript:

1 Java Access to RDB Relational databases (RDBs) dominate today, due to:
Representational simplicity and flexibility Maturity Scalability Broad accessibility But applications are increasingly object oriented Especially with Java These apps view RDBs as persistent object systems How can this view be supported? Basically two choices Use low level, standard access facility: JDBC Use middleware: an object-relational gateway product

2 Accessing RDBs From Java
Illustrated by access of an Oracle9i database Details on the two approaches JDBC Java DB Connectivity Send SQL strings to relational DB Receive enumerations of records as result Each query is an individual transaction Object relational gateway Presents OO view of relational data Each row is an object (exactly one!) Foreign key -> primary key mappings converted to references Lazy loading Transaction semantics

3 JDBC Provides platform and vendor independent access to relational DBs from Java clients Principal classes java.sql.Connection: manages DB connection java.sql.Statement: presents SQL query as String java.sql.ResultSet: returns collection of query result rows Two varieties of JDBC packages JDBC-ODBC bridge Uses ODBC database connectivity support in Windows Thin JDBC clients Pure Java solutions – good esp. for Web clients (applets)

4 Selecting a driver Java Application Driver Manager ODBC Microsoft
Access Java Application Driver Manager Oracle Driver Oracle Connection object Other DB Driver Other DB

5 Sample code import java.sql.*; public class ConnectionDemo {
public static void main( String av[] ) Connection conn; try { DriverManager.registerDriver( new oracle.jdbc.driver.OracleDriver() ); conn = DriverManager.getConnection( “scott", “tiger"); Statement statement = conn.createStatement(); ResultSet rs = statement.executeQuery( "select * from branch" );

6 Sample code // iterate through rows in result set while ( rs.next() )
{ // extract column values in current row String branchName = rs.getString( "branch_name" ); String branchCity = rs.getString( "branch_city" ); long assets = rs.getLong( "assets" ); System.out.println( branchName + " " + branchCity + " " + assets ); } // catch any SQLException in this block } catch ( SQLException e ) { System.out.println( e.toString() ); e.printStackTrace();

7 Connection Load DB driver DriverManager.registerDriver(
new oracle.jdbc.driver.OracleDriver() ); Create a connection conn = DriverManager.getConnection( “scott", “tiger"); Close a connection conn.close();

8 Statement Statement object Create statement
an envelope into which you put your message Create statement Statement statement = conn.createStatement(); Execute statement ResultSet rs = statement.executeQuery( "select * from branch" ); ResultSet rs = statement.executeUpdate( “delete from loan where loan-number=‘L-101’" );

9 Statement A generic execute statement is available
String command = “..”; boolean hasResultSet = statement.execute(command); if (hasResultSet) { ResultSet result = statement.getResultSet(); …… } else { int count = statement.getUpdateCount(); }

10 PreparedStatement Provide better performance when frequently used
PreparedStatement pstmt = conn.prepareStatement( insert into loan values (?, ?, ?)); pstmt.setString(1, “L-201”); pstmt.setString(2, “Downtown”); pstmt.setInt(1, 1500); int insCount = pstmt.executeUpdate(); System.out.println(“Inserted “ + insCount + “ rows.”);

11 ResultSet ResultSet organized into logical rows and columns
Use next() to move to the next record Get columns by name and type while ( rs.next() ) { String branchName = rs.getString( "branch_name" ); String branchCity = rs.getString( "branch_city" ); long assets = rs.getLong( "assets" ); System.out.println( branchName + " " + branchCity + " " + assets ); }


Download ppt "Java Access to RDB Relational databases (RDBs) dominate today, due to:"

Similar presentations


Ads by Google