Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.



Published on


Published in: Technology
  • Be the first to comment


  1. 1. JDBC – Java DataBase Connectivity Biz on Cloud System
  2. 2. What is JDBC?     “JDBC an API(Application Programming Interface) to write programs to connect to a database, retrieve the data from the database and utilize the data in a java program.” What is ODBC? It is an Open DataBase Connectivity API Specification given by X open company containing set of rules and guidelines to develop ODBC Drivers. JDBC Specification is given in Java language to interact with Database software's. ODBC specification is given in C language to interact with “VB, VB.Net, D2K, 2
  3. 3. 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. 4. 4
  5. 5. JDBC Driver Types  There 1. 2. 3. 4. are 4 JDBC Driver Types Type-1 JDBC Driver Type-2 JDBC Driver Type-3 JDBC Driver Type-4 JDBC Driver 5
  6. 6. Type-1: JDBC-ODBC Bridge Driver 6
  7. 7. Type-1  JDBC driver type-1 is designed to interact with ODBC Drivers. Each ODBC Driver uses the database specific vendor DB Library to communicate with DB S/W  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. 7
  8. 8. TYPE-1  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 type 1 driver is not considered a deployment-level driver and is typically used for development and testing purposes only. 8
  9. 9. Advantages of Type-1  1. It is a built in JDBC driver of J2SDK s/w. So there is no need of arranging JDBC Driver separately.  2. since ODBC drivers and vendor DB Libraries are available almost for all the DB s/w’s , we can use JDBC TYPE 1 driver to interact with all the DB S/ws 9
  10. 10. Disadvantages of type-1  Since multiple converssions are involved, performance of jdbc is very poor  Due to performance problem, this driver is not suitable for large scale applications 10
  11. 11. Type 2: JDBC-Native API:  In a Type 2 driver, JDBC API calls are converted into native C/C++ API calls which are unique to the database. These drivers typically provided by the database vendors and used in the same manner as the JDBCODBC Bridge, the vendor-specific driver must be installed on each client machine. 11
  12. 12.  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. 12
  13. 13. 13
  14. 14. Type 3: JDBC-Net pure Java:  In a Type 3 driver, a three-tier approach is used to accessing databases. The JDBC clients use standard network sockets to communicate with an 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. 14
  15. 15. Type-3: JDBC-Net pure java  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. 15
  16. 16. 16
  17. 17. Type-3: JDBC-Net pure java  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. 17
  18. 18. 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 18
  19. 19. Type 4: 100% pure Java:  In a Type 4 driver, a pure Java-based driver that communicates directly with 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. 19
  20. 20. 20
  21. 21.  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. 21
  22. 22. Advantages of type 4  It is totally developed in java so it exhibits platform independently  Since this driver is designed to interact with db s/w directly. So there is no need of vendor db library, odbc driver in the client machine. This driver is suitable for internet application and for untrusted applet to db connection  This driver can be made downloading to client machine dynamically from n/w 22
  23. 23. Type-4: advantages contn..  This driver gives better performance compare to other drivers. So, those driver can be used in large scale and high-end applications 23
  24. 24. Disadvantages of type-4  For every db s/w, we need separate jdbc driver type-4 24
  25. 25. 25
  26. 26. 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:@oracl e-prod:1521:OPROD", username, passwd);  What do you think this statement does?  Establishes connection to database by obtaining a Connection object 26
  27. 27. 27
  28. 28. 2. Create JDBC statement(s)  Statement  stmt = con.createStatement() ; Creates a Statement object for sending SQL statements to the database 28
  29. 29. 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); 29
  30. 30. Get ResultSet String queryLehigh = "select * from Lehigh"; ResultSet rs = Stmt.executeQuery(queryLehigh); //What does this statement do? while ( { int ssn = rs.getInt("SSN"); String name = rs.getString("NAME"); int marks = rs.getInt("MARKS"); } 30
  31. 31. Close connection  stmt.close();  con.close(); 31
  32. 32. 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. 32
  33. 33. 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 33
  34. 34. Another way to access database (JDBC-ODBC) What’s a bit different about this architecture? Why add yet another layer? 34
  35. 35. 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"); 35
  36. 36. Sample program(cont) ResultSet rs = s.getResultSet(); if (rs != null) // if rs == null, then there is no ResultSet to view while ( ) // 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); } } } 36
  37. 37. Mapping types JDBC - Java 37
  38. 38. 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 … 38
  39. 39. 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 ( ) { int grade = rs.getInt(“grade”); rs.updateInt(“grade”, grade+10); rs.updateRow(); } 39
  40. 40. 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. 40
  41. 41. 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 ); … 41
  42. 42. 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 ( ) { for(int i=1; i < nCols; ++i) System.out.print( rs.getString( i)+","); System.out.println( rs.getString(nCols) ); } } 42
  43. 43. JDBC and beyond  (JNDI) Java Naming and Directory Interface    (JDO) Java Data Object    API for network-wide sharing of information about users, machines, networks, services, and applications Preserves Java’s object model 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 43
  44. 44. JDBC references  JDBC Data Access API – JDBC Technology Homepage   JDBC Database Access – The Java Tutorial   JDBC Technology Guide: Getting Started   java.sql package   JDBC Documentation   JDBC API Tutorial and Reference (book)  45
  45. 45. JDBC  JDBC Data Access API – JDBC Technology Homepage   JDBC Database Access – The Java Tutorial   JDBC Technology Guide: Getting Started   java.sql package   JDBC Documentation   JDBC API Tutorial and Reference (book)  46