SlideShare une entreprise Scribd logo
1  sur  35
JDBC
Objectives


                In this session, you will learn to:
                   Identify the layers in JDBC architecture
                   Identify the types of JDBC drivers
                   Use the classes and interfaces of JDBC API
                   Understand and execute the steps to create JDBC applications




     Ver. 1.0                        Session 1                         Slide 1 of 35
JDBC
Introducing JDBC


                Database Connectivity:
                   Sun Microsystems has included JDBC API as a part of J2SDK
                   to develop Java applications that can communicate with
                   databases.
                   The following figure shows the Airline Reservation System
                   developed in Java interacting with the Airlines database using
                   the JDBC API:




     Ver. 1.0                       Session 1                             Slide 2 of 35
JDBC
Database Connectivity


                JDBC Architecture:
                   Provides the mechanism to translate Java statements into SQL
                   statements.
                   Can be classified into two layers:
                      JDBC application layer
                      JDBC driver layer




     Ver. 1.0                        Session 1                         Slide 3 of 35
JDBC
Database Connectivity (Contd.)


                JDBC Drivers:
                   Convert SQL statements into a form that a particular database
                   can interpret.
                   Retrieve the result of SQL statements and convert the result
                   into equivalent JDBC API class objects.
                   Are of four types:
                      JDBC-ODBC Bridge driver
                      Native-API Partly-Java driver
                      JDBC-Net Pure-Java driver
                      Native Protocol Pure-Java driver




     Ver. 1.0                         Session 1                          Slide 4 of 35
JDBC
Types of Drivers


                JDBC-ODBC Bridge driver:




     Ver. 1.0                    Session 1   Slide 5 of 35
JDBC
Types of Drivers (Contd.)


                Native-API Partly-Java driver:




     Ver. 1.0                      Session 1     Slide 6 of 35
JDBC
Types of Drivers (Contd.)


                JDBC-Net Pure-Java driver:




     Ver. 1.0                     Session 1   Slide 7 of 35
JDBC
Types of Drivers (Contd.)


                Native-Protocol Pure-Java driver:




     Ver. 1.0                      Session 1        Slide 8 of 35
JDBC
Using JDBC API


               The JDBC API classes and interfaces are available in the
               java.sql and the javax.sql packages.
               The commonly used classes and interfaces in the JDBC
               API are:
               – DriverManager class: Loads the driver for a database.
               – Driver interface: Represents a database driver. All JDBC
                 driver classes must implement the Driver interface.
               – Connection interface: Enables you to establish a connection
                 between a Java application and a database.
               – Statement interface: Enables you to execute SQL statements.
               – ResultSet interface: Represents the information retrieved
                 from a database.
               – SQLException class: Provides information about the
                 exceptions that occur while interacting with databases.


    Ver. 1.0                      Session 1                         Slide 9 of 35
JDBC
Creation of a JDBC Application


                Steps to create a JDBC application are:
                   Load a driver
                   Connect to a database
                   Create and execute JDBC statements
                   Handle SQL exceptions




     Ver. 1.0                      Session 1              Slide 10 of 35
JDBC
Loading a Driver


                Driver can be loaded:
                   Programmatically:
                    • Using the forName() method
                    • Using the registerDriver()method
                   Manually:
                    • By setting system property




     Ver. 1.0                      Session 1             Slide 11 of 35
JDBC
The forName() Method


               Using the forName() method:
               – The forName() method is available in the java.lang.Class
                 class.
               – The forName() method loads the JDBC driver and registers
                 the driver with the driver manager.
               – The method call to use the the forName() method is:
                  Class.forName("com.microsoft.sqlserver.jdbc.S
                  QLServerDriver");




    Ver. 1.0                     Session 1                        Slide 12 of 35
JDBC
The registerDriver() Method


                •   Using the registerDriver() method:
                      You can create an instance of the Driver class to load a JDBC
                      driver.
                      This instance enables you to provide the name of the driver
                      class at run time.
                      The statement to create an instance of the Driver class is:
                       Driver d = new
                       com.microsoft.sqlserver.jdbc.SQLServerDriver(
                       );
                    – You need to call the registerDriver() method to register
                      the Driver object with the DriverManager.
                    – The method call to register the Type 4 driver is:
                       DriverManager.registerDriver(d);




     Ver. 1.0                           Session 1                          Slide 13 of 35
JDBC
Setting System Property


                Steps to set the System Property:
                – Add the driver name to the jdbc.drivers system property to
                  load a JDBC driver.
                – Use the –D command line option to set the system property on
                  the command line.
                – The command to set the system property is:
                    java –Djdbc.drivers=
                    com.microsoft.sqlserver.jdbc.SQLServerDriver
                    SampleApplication




     Ver. 1.0                      Session 1                          Slide 14 of 35
JDBC
Connecting to a Database


                Connecting to a Database:
                – The DriverManager class provides the getConnection()
                  method to create a Connection object.
                – The getConnection() method method has the following
                  three forms:
                      Connection getConnection (String <url>)
                      Connection getConnection (String <url>, String
                      <username>, String <password>)
                      Connection getConnection (String <url>,
                      Properties <properties>)




     Ver. 1.0                     Session 1                       Slide 15 of 35
JDBC
Creating and Executing JDBC Statements


                JDBC Statements can be created and executed as follows:
                – The Connection object provides the createStatement()
                  method to create a Statement object.
                – You can use static SQL statements to send requests to a
                  database to retrieve results.
                – The Statement interface contains the following methods to
                  send static SQL statements to a database:
                      ResultSet executeQuery(String str)
                      int executeUpdate(String str)
                      boolean execute(String str)




     Ver. 1.0                        Session 1                       Slide 16 of 35
JDBC
Database Operations


                • Various database operations that you can perform using a
                  Java application are:
                      Querying a table
                      Inserting rows in a table
                      Updating rows in a table
                      Deleting rows from a table
                      Creating a table
                      Altering and dropping a table




     Ver. 1.0                           Session 1                   Slide 17 of 35
JDBC
Querying a Table


                In order to query a table:
                 – The SELECT statement is executed using the
                   executeQuery() method and returns the output in the form
                   of a ResultSet object.
                 – The code snippet to retrieve data from the Authors table is:
                    String str = "SELECT * FROM Authors";
                    Statement stmt = con.createStatement();
                    ResultSet rs = stmt.executeQuery(str);




     Ver. 1.0                        Session 1                          Slide 18 of 35
JDBC
Inserting Rows in a Table


                In order to insert rows in a table:
                 – The executeUpdate() method enables you to add rows in a
                   table.
                 – The code snippet to insert a row in the Authors table is:
                    String str = " INSERT INTO Authors (au_id,
                    au_name, phone, address, city,
                    state, zip) VALUES (‘a004’, ‘Ringer
                    Albert’, ‘8018260752’, ‘ 67 Seventh Av.’,
                    ‘Salt Lake City’, ‘UT’, ’100000078’)";
                    Statement stmt = con.createStatement();
                    int count = stmt.executeUpdate(str);




     Ver. 1.0                        Session 1                       Slide 19 of 35
JDBC
Updating and Deleting Rows in a Table


                The code snippet to modify a row in the Authors table is:
                 String str = "UPDATE Authors SET
                 address='10932 Second Av.’ WHERE
                 au_id=‘a001’";
                 Statement stmt = con.createStatement();
                 int count = stmt.executeUpdate(str);
                The code snippet to delete a row from the Authors table is:
                 String str = "DELETE FROM Authors WHERE
                 au_id=‘a005’";
                 Statement stmt = con.createStatement();
                 int count = stmt.executeUpdate(str);




     Ver. 1.0                      Session 1                         Slide 20 of 35
JDBC
Creating a Table


                The CREATE TABLE statement is used to create and
                define the structure of a table in a database.
                The code snippet to create a table is:
                 String str="CREATE TABLE Publishers"
                 +"(pub_id VARCHAR(5),"
                 +"pub_name VARCHAR(50),"
                 +"phone INTEGER,"
                 +"address VARCHAR(50), "
                 +"city VARCHAR(50), "
                 +"ZIP VARCHAR(20))";
                 Statement stmt=con.createStatement();
                 stmt.execute(str);


     Ver. 1.0                    Session 1                     Slide 21 of 35
JDBC
Altering and Dropping a Table


                DDL provides the ALTER statement to modify the definition
                of database object.
                The code snippet to add a column to the Books table is:
                  String str="ALTER TABLE Books “+"ADD price
                  INTEGER";
                  Statement stmt=con.createStatement();
                  stmt.execute(str);
                DDL provides the DROP TABLE statement to drop a table
                from a database.
                The code snippet to drop the Books table from a database
                is:
                  String str="DROP TABLE Books";
                  Statement stmt=con.createStatement();
                  stmt.execute(str);
     Ver. 1.0                     Session 1                       Slide 22 of 35
JDBC
Handling SQL Exceptions


                SQL Exceptions can be handled as follows:
                   The java.sql package provides the SQLException class, which
                   is derived from the java.lang.Exception class.
                   You can catch the SQLException in a Java application using
                   the try and catch exception handling block.
                   The SQLException class contains various methods that
                   provide error information, these methods are:
                    • int getErrorCode(): Returns the error code associated with the
                      error occurred.
                    • String getSQLState(): Returns X/Open error code.
                    • SQLException getNextException(): Returns the next exception in
                      the chain of exceptions.




     Ver. 1.0                        Session 1                             Slide 23 of 35
JDBC
Accessing Result Sets


                A ResultSet object maintains a cursor that enables you to
                move through the rows stored in a ResultSet object.
                The various types of ResultSet objects to store the output
                returned by a database are:
                 – Read only: Allows you to only read the rows in a ResultSet
                   object.
                 – Forward only: Moves the result set cursor from first row to last
                   row in forward direction only.
                 – Scrollable: Moves the result set cursor forward or backward
                   through the result set.
                 – Updatable: Allows you to update the result set rows retrieved
                   from a database table.




     Ver. 1.0                        Session 1                            Slide 24 of 35
JDBC
Accessing Result Sets (Contd.)


                The following table lists various fields of ResultSet interface
                that you can use to specify the type of a ResultSet object:

                    ResultSet Fields                          Description


                 TYPE_SCROLL_SENTIT       Specifies that the cursor of the ResultSet object is
                 IVE                      scrollable and it reflects the changes in the data
                                          made by other users.

                 TYPE_SCROLL_INSENS       Specifies that the cursor of the ResultSet object is
                 ITIVE                    scrollable and it does not reflect changes in the
                                          data made by other users.

                 TYPE_FORWARD_ONLY        Specifies that the cursor of the ResultSet object
                                          moves in forward direction only from the first row to
                                          the last row.




     Ver. 1.0                          Session 1                                      Slide 25 of 35
JDBC
Accessing Result Sets (Contd.)


                The following table lists various fields of the ResultSet
                interface that you can use to specify different concurrency
                modes of result sets:

                         ResultSet Fields                     Description



                  CONCUR_READ_ONLY                 Specifies the concurrency mode
                                                   that does not allow you to update
                                                   the ResultSet object.

                  CONCUR_UPDATABLE                 Specifies the concurrency mode
                                                   that allows you to update the
                                                   ResultSet object.




     Ver. 1.0                          Session 1                                  Slide 26 of 35
JDBC
The createStatement() method


                The createStatement() method has the following three
                overloaded forms:
                – Statement createStatement()
                – Statement createStatement(int, int)
                – Statement createStatement(int, int, int)




     Ver. 1.0                      Session 1                      Slide 27 of 35
JDBC
Methods of ResultSet Interface


                The following tables lists the methods of ResultSet
                interface:
                      Method                                Description

                boolean first()       Shifts the control of a result set cursor to the first row
                                      of the result set.
                boolean isFirst()     Determines whether the result set cursor points to the
                                      first row of the result set.
                boolean               Shifts the control of a result set cursor before the first
                beforeFirst()         row of the result set.
                boolean               Determines whether the result set cursor points
                isBeforeFirst()       before the first row of the result set.
                boolean last()        Shifts the control of a result set cursor to the last row
                                      of the result set.
                boolean isLast()      Determines whether the result set cursor points to the
                                      last row of the result set.




     Ver. 1.0                       Session 1                                         Slide 28 of 35
JDBC
Methods of ResultSet Interface (Contd.)


                • The methods of ResultSet interface (Contd.):

                       Method                                Description

                  boolean           Shifts the control of a result set cursor after the last row of
                  afterLast()       the result set.
                  boolean           Determines whether the result set cursor points after the
                  isAfterLast()     last row of the result set.

                  boolean           Shifts the control of a result set cursor to the previous row
                  previous()        of the result set.
                  boolean           Shifts the control of a result set cursor to the row number
                  absolute(int i)   that you specify as a parameter.

                  boolean           Shifts the control of a result set cursor, forward or
                  relative(int i)   backward, relative to the row number that you specify as a
                                    parameter.




     Ver. 1.0                         Session 1                                          Slide 29 of 35
JDBC
Methods of ResultSet Interface (Contd.)


                JDBC allows you to create an updatable result set that
                enables you to modify the rows in the result set.
                The following table lists some of the methods used with
                updatable result set:
                     Method                              Description

                void updateRow()   Updates a row of the current ResultSet object and the
                                   underlying database table.
                void insertRow()   Inserts a row in the current ResultSet object and the
                                   underlying database table.
                void deleteRow()   Deletes a row from the current ResultSet object and the
                                   underlying database table.
                void               Updates the specified column with the given string value.
                updateString()
                void updateInt()   Updates the specified column with the given int value.


     Ver. 1.0                      Session 1                                      Slide 30 of 35
JDBC
Demo: Creating a JDBC Application to Query a Database


                Problem Statement:
                   Create an application to retrieve information (author id, name,
                   phone, address, city, state, and zip ) about the authors who are
                   living in the city where the city name begins with the letter “S”.




     Ver. 1.0                        Session 1                              Slide 31 of 35
JDBC
Demo: Creating a JDBC Application to Query a Database (Contd.)


                Solution:
                   Type 4 driver is to be used for creating the application. To
                   solve the above problem, perform the following tasks:
                      Create a Data Source Name (DSN).
                      Code the application.
                      Compile and execute the application.




     Ver. 1.0                        Session 1                             Slide 32 of 35
JDBC
Summary


               In this session, you learned that:
                  JDBC Architecture consists of two layers:
                   • JDBC application layer: Signifies a Java application that uses the
                     JDBC API to interact with the JDBC driver manager.
                   • JDBC driver layer: Contains a driver, such as an SQL Server
                     driver, which enables a Java application to connect to a database.
                     This layer acts as an interface between a Java application and a
                     database.
                – The JDBC driver manager manages various JDBC drivers.
                – The JDBC driver is software that a Java application uses to
                  access a database.
                – JDBC supports four types of drivers:
                      JDBC-ODBC Bridge driver
                      Native-API Partly-Java driver
                      JDBC-Net Pure-Java driver
                      Native Protocol Pure-Java driver

    Ver. 1.0                          Session 1                               Slide 33 of 35
JDBC
Summary (Contd.)


               The JDBC API consists of various classes and interfaces that
               enable Java applications to interact with databases.
               The classes and interfaces of the JDBC API are defined in the
               java.sql and javax.sql packages.
               You can load a driver and register it with the driver manager
               either programmatically or manually.
               Two ways to load and register a driver programmatically are:
                • Using the Class.forName() method
                • Using the registerDriver() method
               You can add the driver name to the jdbc.drivers system
               property to load and register a JDBC driver manually.
               A Connection object establishes a connection between a Java
               application and a database.
               A Statement object sends requests to and retrieves results
               from a database.

    Ver. 1.0                     Session 1                          Slide 34 of 35
JDBC
Summary (Contd.)


               You can insert, update, and delete data from a table using the
               DML statements in Java applications.
               You can create, alter, and drop tables from a database using
               the DDL statements in Java applications.
               A ResultSet object stores the result retrieved from a database
               when a SELECT statement is executed.
               You can create various types of ResultSet objects such as
               read only, updatable, and forward only.




    Ver. 1.0                     Session 1                           Slide 35 of 35

Contenu connexe

Tendances

java database connection (jdbc)
java database connection (jdbc)java database connection (jdbc)
java database connection (jdbc)Sanjay Gunjal
 
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
 
01 qmds2005 session01
01 qmds2005 session0101 qmds2005 session01
01 qmds2005 session01Niit Care
 
Ejb3.1 for the starter
Ejb3.1 for the starterEjb3.1 for the starter
Ejb3.1 for the startershohancse
 
02.egovFrame Development Environment training book
02.egovFrame Development Environment training book02.egovFrame Development Environment training book
02.egovFrame Development Environment training bookChuong Nguyen
 
The Java EE 7 Platform: Productivity++ & Embracing HTML5
The Java EE 7 Platform: Productivity++ & Embracing HTML5The Java EE 7 Platform: Productivity++ & Embracing HTML5
The Java EE 7 Platform: Productivity++ & Embracing HTML5Arun Gupta
 
Ajava final(sachin sir9822506209)_vision_academy_21
Ajava final(sachin sir9822506209)_vision_academy_21Ajava final(sachin sir9822506209)_vision_academy_21
Ajava final(sachin sir9822506209)_vision_academy_21SachinZurange
 
All adapterscommonproperties
All adapterscommonpropertiesAll adapterscommonproperties
All adapterscommonpropertiesXAVIERCONSULTANTS
 

Tendances (17)

Jdbc
JdbcJdbc
Jdbc
 
java database connection (jdbc)
java database connection (jdbc)java database connection (jdbc)
java database connection (jdbc)
 
3 jdbc
3 jdbc3 jdbc
3 jdbc
 
Dacj 4 2-b
Dacj 4 2-bDacj 4 2-b
Dacj 4 2-b
 
Java EE and Glassfish
Java EE and GlassfishJava EE and Glassfish
Java EE and Glassfish
 
Dacj 4 2-c
Dacj 4 2-cDacj 4 2-c
Dacj 4 2-c
 
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...
 
01 qmds2005 session01
01 qmds2005 session0101 qmds2005 session01
01 qmds2005 session01
 
Java Introduction
Java IntroductionJava Introduction
Java Introduction
 
Jdbc drivers
Jdbc driversJdbc drivers
Jdbc drivers
 
Ejb3.1 for the starter
Ejb3.1 for the starterEjb3.1 for the starter
Ejb3.1 for the starter
 
Core jdbc basics
Core jdbc basicsCore jdbc basics
Core jdbc basics
 
Spring
SpringSpring
Spring
 
02.egovFrame Development Environment training book
02.egovFrame Development Environment training book02.egovFrame Development Environment training book
02.egovFrame Development Environment training book
 
The Java EE 7 Platform: Productivity++ & Embracing HTML5
The Java EE 7 Platform: Productivity++ & Embracing HTML5The Java EE 7 Platform: Productivity++ & Embracing HTML5
The Java EE 7 Platform: Productivity++ & Embracing HTML5
 
Ajava final(sachin sir9822506209)_vision_academy_21
Ajava final(sachin sir9822506209)_vision_academy_21Ajava final(sachin sir9822506209)_vision_academy_21
Ajava final(sachin sir9822506209)_vision_academy_21
 
All adapterscommonproperties
All adapterscommonpropertiesAll adapterscommonproperties
All adapterscommonproperties
 

Similaire à Java session16

JDBC with MySQL.pdf
JDBC with MySQL.pdfJDBC with MySQL.pdf
JDBC with MySQL.pdfArumugam90
 
JDBC with MySQL.pdf
JDBC with MySQL.pdfJDBC with MySQL.pdf
JDBC with MySQL.pdfArumugam90
 
Java database connectivity with MySql
Java database connectivity with MySqlJava database connectivity with MySql
Java database connectivity with MySqlDhyey Dattani
 
Java database connectivity with MySql
Java database connectivity with MySqlJava database connectivity with MySql
Java database connectivity with MySqlDhyey Dattani
 
chapter 5 java.pptx
chapter 5  java.pptxchapter 5  java.pptx
chapter 5 java.pptxBekiTube
 
Jdbc connectivity
Jdbc connectivityJdbc connectivity
Jdbc connectivityarikazukito
 
Java Database Connectivity
Java Database ConnectivityJava Database Connectivity
Java Database Connectivitybackdoor
 
Fundamentals of JDBC
Fundamentals of JDBCFundamentals of JDBC
Fundamentals of JDBCJainul Musani
 
Final Database Connectivity in JAVA.ppt
Final Database Connectivity in JAVA.pptFinal Database Connectivity in JAVA.ppt
Final Database Connectivity in JAVA.pptTabassumMaktum
 
JDBC: java DataBase connectivity
JDBC: java DataBase connectivityJDBC: java DataBase connectivity
JDBC: java DataBase connectivityTanmoy Barman
 
JDBC : Java Database Connectivity
JDBC : Java Database Connectivity JDBC : Java Database Connectivity
JDBC : Java Database Connectivity DevAdnani
 

Similaire à Java session16 (20)

Dacj 4 1-a
Dacj 4 1-aDacj 4 1-a
Dacj 4 1-a
 
JDBC
JDBCJDBC
JDBC
 
JDBC with MySQL.pdf
JDBC with MySQL.pdfJDBC with MySQL.pdf
JDBC with MySQL.pdf
 
JDBC with MySQL.pdf
JDBC with MySQL.pdfJDBC with MySQL.pdf
JDBC with MySQL.pdf
 
Java database connectivity with MySql
Java database connectivity with MySqlJava database connectivity with MySql
Java database connectivity with MySql
 
Java database connectivity with MySql
Java database connectivity with MySqlJava database connectivity with MySql
Java database connectivity with MySql
 
Jdbc ppt
Jdbc pptJdbc ppt
Jdbc ppt
 
chapter 5 java.pptx
chapter 5  java.pptxchapter 5  java.pptx
chapter 5 java.pptx
 
Jdbc connectivity
Jdbc connectivityJdbc connectivity
Jdbc connectivity
 
Jdbc new
Jdbc newJdbc new
Jdbc new
 
Java Database Connectivity
Java Database ConnectivityJava Database Connectivity
Java Database Connectivity
 
JDBC.ppt
JDBC.pptJDBC.ppt
JDBC.ppt
 
Jdbc introduction
Jdbc introductionJdbc introduction
Jdbc introduction
 
Fundamentals of JDBC
Fundamentals of JDBCFundamentals of JDBC
Fundamentals of JDBC
 
jdbc
jdbcjdbc
jdbc
 
Java jdbc
Java jdbcJava jdbc
Java jdbc
 
Final Database Connectivity in JAVA.ppt
Final Database Connectivity in JAVA.pptFinal Database Connectivity in JAVA.ppt
Final Database Connectivity in JAVA.ppt
 
Assignment#10
Assignment#10Assignment#10
Assignment#10
 
JDBC: java DataBase connectivity
JDBC: java DataBase connectivityJDBC: java DataBase connectivity
JDBC: java DataBase connectivity
 
JDBC : Java Database Connectivity
JDBC : Java Database Connectivity JDBC : Java Database Connectivity
JDBC : Java Database Connectivity
 

Plus de Niit Care (20)

Ajs 1 b
Ajs 1 bAjs 1 b
Ajs 1 b
 
Ajs 4 b
Ajs 4 bAjs 4 b
Ajs 4 b
 
Ajs 4 a
Ajs 4 aAjs 4 a
Ajs 4 a
 
Ajs 4 c
Ajs 4 cAjs 4 c
Ajs 4 c
 
Ajs 3 b
Ajs 3 bAjs 3 b
Ajs 3 b
 
Ajs 3 a
Ajs 3 aAjs 3 a
Ajs 3 a
 
Ajs 3 c
Ajs 3 cAjs 3 c
Ajs 3 c
 
Ajs 2 b
Ajs 2 bAjs 2 b
Ajs 2 b
 
Ajs 2 a
Ajs 2 aAjs 2 a
Ajs 2 a
 
Ajs 2 c
Ajs 2 cAjs 2 c
Ajs 2 c
 
Ajs 1 a
Ajs 1 aAjs 1 a
Ajs 1 a
 
Ajs 1 c
Ajs 1 cAjs 1 c
Ajs 1 c
 
Dacj 4 2-a
Dacj 4 2-aDacj 4 2-a
Dacj 4 2-a
 
Dacj 4 1-c
Dacj 4 1-cDacj 4 1-c
Dacj 4 1-c
 
Dacj 4 1-b
Dacj 4 1-bDacj 4 1-b
Dacj 4 1-b
 
Dacj 1-2 b
Dacj 1-2 bDacj 1-2 b
Dacj 1-2 b
 
Dacj 1-3 c
Dacj 1-3 cDacj 1-3 c
Dacj 1-3 c
 
Dacj 1-3 b
Dacj 1-3 bDacj 1-3 b
Dacj 1-3 b
 
Dacj 1-3 a
Dacj 1-3 aDacj 1-3 a
Dacj 1-3 a
 
Dacj 1-2 c
Dacj 1-2 cDacj 1-2 c
Dacj 1-2 c
 

Dernier

The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxLoriGlavin3
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024Lonnie McRorey
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxNavinnSomaal
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsPixlogix Infotech
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionDilum Bandara
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxLoriGlavin3
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity PlanDatabarracks
 
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESSALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESmohitsingh558521
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxLoriGlavin3
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfLoriGlavin3
 

Dernier (20)

The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and Cons
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An Introduction
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity Plan
 
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESSALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdf
 

Java session16

  • 1. JDBC Objectives In this session, you will learn to: Identify the layers in JDBC architecture Identify the types of JDBC drivers Use the classes and interfaces of JDBC API Understand and execute the steps to create JDBC applications Ver. 1.0 Session 1 Slide 1 of 35
  • 2. JDBC Introducing JDBC Database Connectivity: Sun Microsystems has included JDBC API as a part of J2SDK to develop Java applications that can communicate with databases. The following figure shows the Airline Reservation System developed in Java interacting with the Airlines database using the JDBC API: Ver. 1.0 Session 1 Slide 2 of 35
  • 3. JDBC Database Connectivity JDBC Architecture: Provides the mechanism to translate Java statements into SQL statements. Can be classified into two layers: JDBC application layer JDBC driver layer Ver. 1.0 Session 1 Slide 3 of 35
  • 4. JDBC Database Connectivity (Contd.) JDBC Drivers: Convert SQL statements into a form that a particular database can interpret. Retrieve the result of SQL statements and convert the result into equivalent JDBC API class objects. Are of four types: JDBC-ODBC Bridge driver Native-API Partly-Java driver JDBC-Net Pure-Java driver Native Protocol Pure-Java driver Ver. 1.0 Session 1 Slide 4 of 35
  • 5. JDBC Types of Drivers JDBC-ODBC Bridge driver: Ver. 1.0 Session 1 Slide 5 of 35
  • 6. JDBC Types of Drivers (Contd.) Native-API Partly-Java driver: Ver. 1.0 Session 1 Slide 6 of 35
  • 7. JDBC Types of Drivers (Contd.) JDBC-Net Pure-Java driver: Ver. 1.0 Session 1 Slide 7 of 35
  • 8. JDBC Types of Drivers (Contd.) Native-Protocol Pure-Java driver: Ver. 1.0 Session 1 Slide 8 of 35
  • 9. JDBC Using JDBC API The JDBC API classes and interfaces are available in the java.sql and the javax.sql packages. The commonly used classes and interfaces in the JDBC API are: – DriverManager class: Loads the driver for a database. – Driver interface: Represents a database driver. All JDBC driver classes must implement the Driver interface. – Connection interface: Enables you to establish a connection between a Java application and a database. – Statement interface: Enables you to execute SQL statements. – ResultSet interface: Represents the information retrieved from a database. – SQLException class: Provides information about the exceptions that occur while interacting with databases. Ver. 1.0 Session 1 Slide 9 of 35
  • 10. JDBC Creation of a JDBC Application Steps to create a JDBC application are: Load a driver Connect to a database Create and execute JDBC statements Handle SQL exceptions Ver. 1.0 Session 1 Slide 10 of 35
  • 11. JDBC Loading a Driver Driver can be loaded: Programmatically: • Using the forName() method • Using the registerDriver()method Manually: • By setting system property Ver. 1.0 Session 1 Slide 11 of 35
  • 12. JDBC The forName() Method Using the forName() method: – The forName() method is available in the java.lang.Class class. – The forName() method loads the JDBC driver and registers the driver with the driver manager. – The method call to use the the forName() method is: Class.forName("com.microsoft.sqlserver.jdbc.S QLServerDriver"); Ver. 1.0 Session 1 Slide 12 of 35
  • 13. JDBC The registerDriver() Method • Using the registerDriver() method: You can create an instance of the Driver class to load a JDBC driver. This instance enables you to provide the name of the driver class at run time. The statement to create an instance of the Driver class is: Driver d = new com.microsoft.sqlserver.jdbc.SQLServerDriver( ); – You need to call the registerDriver() method to register the Driver object with the DriverManager. – The method call to register the Type 4 driver is: DriverManager.registerDriver(d); Ver. 1.0 Session 1 Slide 13 of 35
  • 14. JDBC Setting System Property Steps to set the System Property: – Add the driver name to the jdbc.drivers system property to load a JDBC driver. – Use the –D command line option to set the system property on the command line. – The command to set the system property is: java –Djdbc.drivers= com.microsoft.sqlserver.jdbc.SQLServerDriver SampleApplication Ver. 1.0 Session 1 Slide 14 of 35
  • 15. JDBC Connecting to a Database Connecting to a Database: – The DriverManager class provides the getConnection() method to create a Connection object. – The getConnection() method method has the following three forms: Connection getConnection (String <url>) Connection getConnection (String <url>, String <username>, String <password>) Connection getConnection (String <url>, Properties <properties>) Ver. 1.0 Session 1 Slide 15 of 35
  • 16. JDBC Creating and Executing JDBC Statements JDBC Statements can be created and executed as follows: – The Connection object provides the createStatement() method to create a Statement object. – You can use static SQL statements to send requests to a database to retrieve results. – The Statement interface contains the following methods to send static SQL statements to a database: ResultSet executeQuery(String str) int executeUpdate(String str) boolean execute(String str) Ver. 1.0 Session 1 Slide 16 of 35
  • 17. JDBC Database Operations • Various database operations that you can perform using a Java application are: Querying a table Inserting rows in a table Updating rows in a table Deleting rows from a table Creating a table Altering and dropping a table Ver. 1.0 Session 1 Slide 17 of 35
  • 18. JDBC Querying a Table In order to query a table: – The SELECT statement is executed using the executeQuery() method and returns the output in the form of a ResultSet object. – The code snippet to retrieve data from the Authors table is: String str = "SELECT * FROM Authors"; Statement stmt = con.createStatement(); ResultSet rs = stmt.executeQuery(str); Ver. 1.0 Session 1 Slide 18 of 35
  • 19. JDBC Inserting Rows in a Table In order to insert rows in a table: – The executeUpdate() method enables you to add rows in a table. – The code snippet to insert a row in the Authors table is: String str = " INSERT INTO Authors (au_id, au_name, phone, address, city, state, zip) VALUES (‘a004’, ‘Ringer Albert’, ‘8018260752’, ‘ 67 Seventh Av.’, ‘Salt Lake City’, ‘UT’, ’100000078’)"; Statement stmt = con.createStatement(); int count = stmt.executeUpdate(str); Ver. 1.0 Session 1 Slide 19 of 35
  • 20. JDBC Updating and Deleting Rows in a Table The code snippet to modify a row in the Authors table is: String str = "UPDATE Authors SET address='10932 Second Av.’ WHERE au_id=‘a001’"; Statement stmt = con.createStatement(); int count = stmt.executeUpdate(str); The code snippet to delete a row from the Authors table is: String str = "DELETE FROM Authors WHERE au_id=‘a005’"; Statement stmt = con.createStatement(); int count = stmt.executeUpdate(str); Ver. 1.0 Session 1 Slide 20 of 35
  • 21. JDBC Creating a Table The CREATE TABLE statement is used to create and define the structure of a table in a database. The code snippet to create a table is: String str="CREATE TABLE Publishers" +"(pub_id VARCHAR(5)," +"pub_name VARCHAR(50)," +"phone INTEGER," +"address VARCHAR(50), " +"city VARCHAR(50), " +"ZIP VARCHAR(20))"; Statement stmt=con.createStatement(); stmt.execute(str); Ver. 1.0 Session 1 Slide 21 of 35
  • 22. JDBC Altering and Dropping a Table DDL provides the ALTER statement to modify the definition of database object. The code snippet to add a column to the Books table is: String str="ALTER TABLE Books “+"ADD price INTEGER"; Statement stmt=con.createStatement(); stmt.execute(str); DDL provides the DROP TABLE statement to drop a table from a database. The code snippet to drop the Books table from a database is: String str="DROP TABLE Books"; Statement stmt=con.createStatement(); stmt.execute(str); Ver. 1.0 Session 1 Slide 22 of 35
  • 23. JDBC Handling SQL Exceptions SQL Exceptions can be handled as follows: The java.sql package provides the SQLException class, which is derived from the java.lang.Exception class. You can catch the SQLException in a Java application using the try and catch exception handling block. The SQLException class contains various methods that provide error information, these methods are: • int getErrorCode(): Returns the error code associated with the error occurred. • String getSQLState(): Returns X/Open error code. • SQLException getNextException(): Returns the next exception in the chain of exceptions. Ver. 1.0 Session 1 Slide 23 of 35
  • 24. JDBC Accessing Result Sets A ResultSet object maintains a cursor that enables you to move through the rows stored in a ResultSet object. The various types of ResultSet objects to store the output returned by a database are: – Read only: Allows you to only read the rows in a ResultSet object. – Forward only: Moves the result set cursor from first row to last row in forward direction only. – Scrollable: Moves the result set cursor forward or backward through the result set. – Updatable: Allows you to update the result set rows retrieved from a database table. Ver. 1.0 Session 1 Slide 24 of 35
  • 25. JDBC Accessing Result Sets (Contd.) The following table lists various fields of ResultSet interface that you can use to specify the type of a ResultSet object: ResultSet Fields Description TYPE_SCROLL_SENTIT Specifies that the cursor of the ResultSet object is IVE scrollable and it reflects the changes in the data made by other users. TYPE_SCROLL_INSENS Specifies that the cursor of the ResultSet object is ITIVE scrollable and it does not reflect changes in the data made by other users. TYPE_FORWARD_ONLY Specifies that the cursor of the ResultSet object moves in forward direction only from the first row to the last row. Ver. 1.0 Session 1 Slide 25 of 35
  • 26. JDBC Accessing Result Sets (Contd.) The following table lists various fields of the ResultSet interface that you can use to specify different concurrency modes of result sets: ResultSet Fields Description CONCUR_READ_ONLY Specifies the concurrency mode that does not allow you to update the ResultSet object. CONCUR_UPDATABLE Specifies the concurrency mode that allows you to update the ResultSet object. Ver. 1.0 Session 1 Slide 26 of 35
  • 27. JDBC The createStatement() method The createStatement() method has the following three overloaded forms: – Statement createStatement() – Statement createStatement(int, int) – Statement createStatement(int, int, int) Ver. 1.0 Session 1 Slide 27 of 35
  • 28. JDBC Methods of ResultSet Interface The following tables lists the methods of ResultSet interface: Method Description boolean first() Shifts the control of a result set cursor to the first row of the result set. boolean isFirst() Determines whether the result set cursor points to the first row of the result set. boolean Shifts the control of a result set cursor before the first beforeFirst() row of the result set. boolean Determines whether the result set cursor points isBeforeFirst() before the first row of the result set. boolean last() Shifts the control of a result set cursor to the last row of the result set. boolean isLast() Determines whether the result set cursor points to the last row of the result set. Ver. 1.0 Session 1 Slide 28 of 35
  • 29. JDBC Methods of ResultSet Interface (Contd.) • The methods of ResultSet interface (Contd.): Method Description boolean Shifts the control of a result set cursor after the last row of afterLast() the result set. boolean Determines whether the result set cursor points after the isAfterLast() last row of the result set. boolean Shifts the control of a result set cursor to the previous row previous() of the result set. boolean Shifts the control of a result set cursor to the row number absolute(int i) that you specify as a parameter. boolean Shifts the control of a result set cursor, forward or relative(int i) backward, relative to the row number that you specify as a parameter. Ver. 1.0 Session 1 Slide 29 of 35
  • 30. JDBC Methods of ResultSet Interface (Contd.) JDBC allows you to create an updatable result set that enables you to modify the rows in the result set. The following table lists some of the methods used with updatable result set: Method Description void updateRow() Updates a row of the current ResultSet object and the underlying database table. void insertRow() Inserts a row in the current ResultSet object and the underlying database table. void deleteRow() Deletes a row from the current ResultSet object and the underlying database table. void Updates the specified column with the given string value. updateString() void updateInt() Updates the specified column with the given int value. Ver. 1.0 Session 1 Slide 30 of 35
  • 31. JDBC Demo: Creating a JDBC Application to Query a Database Problem Statement: Create an application to retrieve information (author id, name, phone, address, city, state, and zip ) about the authors who are living in the city where the city name begins with the letter “S”. Ver. 1.0 Session 1 Slide 31 of 35
  • 32. JDBC Demo: Creating a JDBC Application to Query a Database (Contd.) Solution: Type 4 driver is to be used for creating the application. To solve the above problem, perform the following tasks: Create a Data Source Name (DSN). Code the application. Compile and execute the application. Ver. 1.0 Session 1 Slide 32 of 35
  • 33. JDBC Summary In this session, you learned that: JDBC Architecture consists of two layers: • JDBC application layer: Signifies a Java application that uses the JDBC API to interact with the JDBC driver manager. • JDBC driver layer: Contains a driver, such as an SQL Server driver, which enables a Java application to connect to a database. This layer acts as an interface between a Java application and a database. – The JDBC driver manager manages various JDBC drivers. – The JDBC driver is software that a Java application uses to access a database. – JDBC supports four types of drivers: JDBC-ODBC Bridge driver Native-API Partly-Java driver JDBC-Net Pure-Java driver Native Protocol Pure-Java driver Ver. 1.0 Session 1 Slide 33 of 35
  • 34. JDBC Summary (Contd.) The JDBC API consists of various classes and interfaces that enable Java applications to interact with databases. The classes and interfaces of the JDBC API are defined in the java.sql and javax.sql packages. You can load a driver and register it with the driver manager either programmatically or manually. Two ways to load and register a driver programmatically are: • Using the Class.forName() method • Using the registerDriver() method You can add the driver name to the jdbc.drivers system property to load and register a JDBC driver manually. A Connection object establishes a connection between a Java application and a database. A Statement object sends requests to and retrieves results from a database. Ver. 1.0 Session 1 Slide 34 of 35
  • 35. JDBC Summary (Contd.) You can insert, update, and delete data from a table using the DML statements in Java applications. You can create, alter, and drop tables from a database using the DDL statements in Java applications. A ResultSet object stores the result retrieved from a database when a SELECT statement is executed. You can create various types of ResultSet objects such as read only, updatable, and forward only. Ver. 1.0 Session 1 Slide 35 of 35