 1992-2007 Pearson Education, Inc. All rights reserved. 1 25 Accessing Databases with JDBC.

Slides:



Advertisements
Similar presentations
CE203 - Application Programming Autumn 2013CE203 Part 51 Part 5.
Advertisements

 2003 Prentice Hall, Inc. All rights reserved. Chapter 22 – Database: SQL, MySQL, DBI and ADO.NET Outline 22.1 Introduction 22.2 Relational Database Model.
Copyright © 2011 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Chapter 13 Introduction to SQL Programming Techniques.
 Pearson Education, Inc. All rights reserved Accessing Databases with JDBC.
Introduction to Structured Query Language (SQL)
1 C. Shahabi Application Programming for Relational Databases Cyrus Shahabi Computer Science Department University of Southern California
1 Introduction to Web Application Introduction to Data Base.
ASP.NET Programming with C# and SQL Server First Edition Chapter 8 Manipulating SQL Server Databases with ASP.NET.
Chapter 7 Managing Data Sources. ASP.NET 2.0, Third Edition2.
CSCI 3328 Object Oriented Programming in C# Chapter 12: Databases and LINQ 1 Xiang Lian The University of Texas – Pan American Edinburg, TX 78539
Advance Computer Programming Java Database Connectivity (JDBC) – In order to connect a Java application to a database, you need to use a JDBC driver. –
Getting connected.  Java application calls the JDBC library.  JDBC loads a driver which talks to the database.  We can change database engines without.
CSCI 6962: Server-side Design and Programming
Java Database Connectivity (JDBC). Introduction Database –Collection of data DBMS –Database management system –Storing and organizing data SQL –Relational.
Session 5: Working with MySQL iNET Academy Open Source Web Development.
 Pearson Education, Inc. All rights reserved Accessing Databases with JDBC.
 Pearson Education, Inc. All rights reserved Accessing Databases with JDBC.
Databases and LINQ Visual Basic 2010 How to Program 1.
ASP.NET Programming with C# and SQL Server First Edition
Intro to JDBC To effectively use Java Data Base Connectivity we must understand: 1.Relational Database Management Systems (RDBMS) 2.JDBC Drivers 3.SQL.
Java Database Connectivity (JDBC) Introduction to JDBC JDBC is a simple API for connecting from Java applications to multiple databases. Lets you smoothly.
Database Programming in Java Corresponds with Chapter 32, 33.
 2008 Pearson Education, Inc. All rights reserved Database: SQL, MySQL, ADO.NET 2.0 and Java DB.
CHAPTER 7 Database: SQL, MySQL. Topics  Introduction  Relational Database Model  Relational Database Overview: Books.mdb Database  SQL (Structured.
PHP Programming with MySQL Slide 8-1 CHAPTER 8 Working with Databases and MySQL.
A CCESSING D ATABASES WITH JDBC CH 24 C S 442: A DVANCED J AVA P ROGRAMMING.
 2003 Prentice Hall, Inc. All rights reserved. 1 Java Database Connectivity with JDBC TM.
CIS 270—Application Development II Chapter 25—Accessing Databases with JDBC.
Chapter 7 Working with Databases and MySQL PHP Programming with MySQL 2 nd Edition.
Chapter 7 Working with Databases and MySQL PHP Programming with MySQL 2 nd Edition.
Liang, Introduction to Java Programming, Seventh Edition, (c) 2009 Pearson Education, Inc. All rights reserved Chapter 38 Advanced Java Database.
CHAPTER 8 Database: SQL, MySQL. Topics  Introduction  Relational Database Model  Relational Database Overview: Books.mdb Database  SQL (Structured.
CSC 411/511: DBMS Design Dr. Nan WangCSC411_L12_JDBC_MySQL 1 MySQL and JDBC.
Database: SQL and MySQL
1 Databases November 15, 2005 Slides modified from Internet & World Wide Web: How to Program (3rd) edition. By Deitel, Deitel, and Goldberg. Published.
 2004 Prentice Hall, Inc. All rights reserved. 1 Segment – 6 Web Server & database.
 2006 Pearson Education, Inc. All rights reserved Database, SQL and ADO.NET.
Java How to Program, 9/e © Copyright by Pearson Education, Inc. All Rights Reserved.
JDBC. Preliminaries Database Database Collection of data Collection of data DBMS DBMS Database management system Database management system Stores and.
Liang, Introduction to Java Programming, Fifth Edition, (c) 2005 Pearson Education, Inc. All rights reserved Chapter 33 Advanced Java.
Visual C# 2012 How to Program © by Pearson Education, Inc. All Rights Reserved.
6 1 Lecture 8: Introduction to Structured Query Language (SQL) J. S. Chou, P.E., Ph.D.
Java How to Program, 9/e © Copyright by Pearson Education, Inc. All Rights Reserved.
Java Database Connectivity (JDBC). Topics 1. The Vendor Variation Problem 2. SQL and Versions of JDBC 3. Creating an ODBC Data Source 4. Simple Database.
Database Systems Design, Implementation, and Management Coronel | Morris 11e ©2015 Cengage Learning. All Rights Reserved. May not be scanned, copied or.
JDBC. Java.sql.package The java.sql package contains various interfaces and classes used by the JDBC API. This collection of interfaces and classes enable.
© Copyright by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. 1 Outline 25.1 Test-Driving the ATM Application 25.2.
 2005 Pearson Education, Inc. All rights reserved Accessing Databases with JDBC.
 2008 Pearson Education, Inc. All rights reserved Database: SQL, MySQL, ADO.NET 2.0 and Java DB.
 2001 Prentice Hall, Inc. All rights reserved. 1 Chapter 22 - SQL, MySQL, DBI and ADO Outline 22.1 Introduction 22.2 Relational Database Model 22.3 Relational.
 2008 Pearson Education, Inc. All rights reserved JavaScript: Introduction to Scripting.
Database Access Using JDBC BCIS 3680 Enterprise Programming.
 2009 Pearson Education, Inc. All rights reserved Databases and LINQ to SQL.
Database: SQL, MySQL, LINQ and Java DB © by Pearson Education, Inc. All Rights Reserved.
CSCI 3327 Visual Basic Chapter 13: Databases and LINQ UTPA – Fall 2011.
Settings MySQL Database and JDBC configuration Instructor: Sergey Goldman.
Copyright © 2016 Ramez Elmasri and Shamkant B. Navathe.
Chapter 12 Introducing Databases. Objectives What a database is and which databases are typically used with ASP.NET pages What SQL is, how it looks, and.
ORDER BY Clause The result of a query can be sorted in ascending or descending order using the optional ORDER BY clause. The simplest form of.
Database, SQL and ADO.NET
Visual Basic 2010 How to Program
 2012 Pearson Education, Inc. All rights reserved.
Accessing Databases with JDBC
JDBC.
Databases Intro (from Deitel)
Chapter 8 Working with Databases and MySQL
Chapter 22 - SQL, MySQL, DBI and ADO
MSIS 655 Advanced Business Applications Programming
12 Accessing Databases with JDBC.
Presentation transcript:

 Pearson Education, Inc. All rights reserved Accessing Databases with JDBC

 Pearson Education, Inc. All rights reserved. 2 It is a capital mistake to theorize before one has data. — Arthur Conan Doyle Now go, write it before them in a table, and note it in a book, that it may be for the time to come for ever and ever. — The Holy Bible, Isaiah 30:8

 Pearson Education, Inc. All rights reserved. 3 Get your facts first, and then you can distort them as much as you please. — Mark Twain I like two kinds of men: domestic and foreign. — Mae West

 Pearson Education, Inc. All rights reserved. 4 OBJECTIVES In this chapter you will learn:  Relational database concepts.  To use Structured Query Language (SQL) to retrieve data from and manipulate data in a database.  To use the JDBC™ API of package java.sql to access databases.  To use the RowSet interface from package javax.sql to manipulate databases.  To use JDBC 4.0’s automatic JDBC driver discovery.  To use PreparedStatement s to create precompiled SQL statements with parameters.  How transaction processing makes database applications more robust.

 Pearson Education, Inc. All rights reserved Introduction 25.2Relational Databases 25.3Relational Database Overview: The books Database 25.4SQL Basic SELECT Query WHERE Claus ORDER BY Claus Merging Data from Multiple Tables: INNER JOIN INSERT Statement UPDATE Statement DELETE Statement 25.5Instructions for installing MySQL and MySQL Connector/J

 Pearson Education, Inc. All rights reserved Instructions for Setting Up a MySQL User Account 25.7 Creating Database book in MySQL 25.8 Manipulating Databases with JDBC Connecting to and Querying a Database Querying the books Database 25.9 RowSet Interface Java DB/Apache Derby PreparedStatement s Stored Procedures Transaction Processing Wrap-Up Web Resources and Recommended Readings

 Pearson Education, Inc. All rights reserved Introduction  Database – Collection of data  DBMS – Database management system – Storing and organizing data  SQL – Relational database – Structured Query Language

 Pearson Education, Inc. All rights reserved Introduction (Cont.)  RDBMS – Relational database management system – MySQL - Open source - Available for both Windows and Linux - dev.mysql.com/downloads/mysql/4.0.hml  JDBC – Java Database Connectivity – JDBC driver - Enable Java applications to connect to database - Enable programmers to manipulate databases using JDBC

 Pearson Education, Inc. All rights reserved. 9 Software Engineering Observation 25.1 Using the JDBC API enables developers to change the underlying DBMS without modifying the Java code that accesses the database.

 2005 Pearson Education, Inc. All rights reserved Relational Databases Relational database – Table Rows, columns – Primary key Unique data SQL queries – Specify which data to select from a table

 Pearson Education, Inc. All rights reserved. 11 Fig | Employee table sample data.

 Pearson Education, Inc. All rights reserved. 12 Fig | Result of selecting distinct Department and Location data from table Employee.

 2005 Pearson Education, Inc. All rights reserved Relational Database Overview: The books Database Sample books database – Four tables authors – authorID, firstName, lastName titles – isbn, title, editionNumber, copyright, publisherID, imageFile, price authorISBN – authorID, isbn

 Pearson Education, Inc. All rights reserved. 14 Fig | authors table from the books database.

 Pearson Education, Inc. All rights reserved. 15 Fig | Sample data from the authors table.

 2005 Pearson Education, Inc. All rights reserved Relational Database Overview: The books Database (Cont.) Foreign key – A column matches the primary key column in another table – Helps maintain the Rule of Referential Integrity Every foreign key value must appear as another table’s primary key value

 Pearson Education, Inc. All rights reserved. 17 Fig | authorISBN table from the books database.

 Pearson Education, Inc. All rights reserved. 18 Fig | Sample data from the authorISBN table of books.

 Pearson Education, Inc. All rights reserved. 19 Fig | titles table from the books database.

 Pearson Education, Inc. All rights reserved. 20 Fig | Sample data from the titles table of the books database.

 2005 Pearson Education, Inc. All rights reserved Relational Database Overview: The books Database (Cont.) Entity-relationship (ER) diagram – Tables in the database – Relationships among tables Rule of Entity Integrity – Primary key uniquely identifies each row – Every row must have a value for every column of the primary key – Value of the primary key must be unique in the table

 Pearson Education, Inc. All rights reserved. 22 Fig | Table relationships in the books database.

 Pearson Education, Inc. All rights reserved. 23 Common Programming Error 25.1 Not providing a value for every column in a primary key breaks the Rule of Entity Integrity and causes the DBMS to report an error.

 Pearson Education, Inc. All rights reserved. 24 Common Programming Error 25.2 Providing the same value for the primary key in multiple rows causes the DBMS to report an error.

 Pearson Education, Inc. All rights reserved. 25 Common Programming Error 25.3 Providing a foreign-key value that does not appear as a primary-key value in another table breaks the Rule of Referential Integrity and causes the DBMS to report an error.

 2005 Pearson Education, Inc. All rights reserved SQL SQL keywords – SQL queries and statements

 Pearson Education, Inc. All rights reserved. 27 Fig | SQL query keywords.

 2005 Pearson Education, Inc. All rights reserved Basic SELECT Query Simplest format of a SELECT query – SELECT * FROM tableName SELECT * FROM authors Select specific fields from a table – SELECT authorID, lastName FROM authors

 Pearson Education, Inc. All rights reserved. 29 Fig | Sample authorID and lastName data from the authors table.

 Pearson Education, Inc. All rights reserved. 30 Software Engineering Observation 25.2 For most queries, the asterisk ( * ) should not be used to specify column names. In general, you process results by knowing in advance the order of the columns in the result—for example, selecting authorID and lastName from table authors ensures that the columns will appear in the result with authorID as the first column and lastName as the second column. Programs typically process result columns by specifying the column number in the result (starting from number 1 for the first column). Selecting columns by name also avoids returning unneeded columns and protects against changes in the actual order of the columns in the table(s).

 Pearson Education, Inc. All rights reserved. 31 Common Programming Error 25.4 If you assume that the columns are always returned in the same order from a query that uses the asterisk ( * ), the program may process the results incorrectly. If the column order in the table(s) changes or if additional columns are added at a later time, the order of the columns in the result would change accordingly.

 2005 Pearson Education, Inc. All rights reserved WHERE Clause specify the selection criteria – SELECT columnName1, columnName2, … FROM tableName WHERE criteria SELECT title, editionNumber, copyright FROM titles WHERE copyright > 2002

 Pearson Education, Inc. All rights reserved. 33 Portability Tip 25.1 See the documentation for your database system to determine whether SQL is case sensitive on your system and to determine the syntax for SQL keywords (i.e., should they be all uppercase letters, all lowercase letters or some combination of the two?).

 Pearson Education, Inc. All rights reserved. 34 Fig | Sampling of titles with copyrights after 2005 from table titles.

 2005 Pearson Education, Inc. All rights reserved WHERE Clause (Cont.) WHERE clause condition operators –, =, =, <> – LIKE wildcard characters % and _ SELECT authorID, firstName, lastName FROM authors WHERE lastName LIKE ‘D%’

 Pearson Education, Inc. All rights reserved. 36 Fig | Authors whose last name starts with D from the authors table.

 Pearson Education, Inc. All rights reserved. 37 Portability Tip 25.2 Read your database system’s documentation carefully to determine whether your system supports the LIKE operator. The SQL we discuss is supported by most RDBMSs, but it is always a good idea to check the features of SQL that are supported by your RDBMS.

 2005 Pearson Education, Inc. All rights reserved WHERE Clause (Cont.) SELECT authorID, firstName, lastName FROM authors WHERE lastName LIKE ‘_i%’

 Pearson Education, Inc. All rights reserved. 39 Fig | The only author from the authors table whose last name contains o as the second letter.

 2005 Pearson Education, Inc. All rights reserved ORDER BY Clause Optional ORDER BY clause – SELECT columnName1, columnName2, … FROM tableName ORDER BY column ASC SELECT authorID, firstName, lastName FROM authors ORDER BY lastName ASC – SELECT columnName1, columnName2, … FROM tableName ORDER BY column DESC SELECT authorID, firstName, lastName FROM authors ORDER BY lastName DESC

 Pearson Education, Inc. All rights reserved. 41 Fig | Sample data from table authors in ascending order by lastName.

 Pearson Education, Inc. All rights reserved. 42 Fig | Sample data from table authors in descending order by lastName.

 2005 Pearson Education, Inc. All rights reserved ORDER BY Clause (Cont.) ORDER BY multiple fields – ORDER BY column1 sortingOrder, column2 sortingOrder, … SELECT authorID, firstName, lastName FROM authors ORDER BY lastName, firstName

 Pearson Education, Inc. All rights reserved. 44 Fig | Sample data from authors in ascending order by lastName and firstName.

 2005 Pearson Education, Inc. All rights reserved ORDER BY Clause (Cont.) Combine the WHERE and ORDER BY clauses SELECT isbn, title, editionNumber, copyright, price FROM titles WHERE title LIKE ‘%How to Program’ ORDER BY title ASC

 Pearson Education, Inc. All rights reserved. 46 Fig | Sampling of books from table titles whose titles end with How to Program in ascending order by title.

 2005 Pearson Education, Inc. All rights reserved Merging Data from Multiple Tables: INNER JOIN Split related data into separate tables Join the tables – Merge data from multiple tables into a single view – INNER JOIN SELECT columnName1, columnName2, … FROM table1 INNER JOIN table2 ON table1.columnName = table2.column2Name SELECT firstName, lastName, isbn FROM authors, authorISBN INNER JOIN authorISBN ON authors.authorID = authorISBN.authorID ORDER BY lastName, firstName

 Pearson Education, Inc. All rights reserved. 48 Fig | Sampling of authors and ISBNs for the books they have written in ascending order by lastName and firstName.

 Pearson Education, Inc. All rights reserved. 49 Software Engineering Observation 25.3 If a SQL statement includes columns with the same name from multiple tables, the statement must precede those column names with their table names and a dot (e.g., authors.authorID ).

 Pearson Education, Inc. All rights reserved. 50 Common Programming Error 25.5 Failure to qualify names for columns that have the same name in two or more tables is an error.

 2005 Pearson Education, Inc. All rights reserved INSERT Statement Insert a row into a table – INSERT INTO tableName ( columnName1, …, columnNameN ) VALUES ( value1, …, valueN ) INSERT INTO authors ( firstName, lastName ) VALUES ( ‘Sue’, ‘Smith’ )

 Pearson Education, Inc. All rights reserved. 52 Fig | Sample data from table Authors after an INSERT operation.

 Pearson Education, Inc. All rights reserved. 53 Common Programming Error 25.6 It is normally an error to specify a value for an autoincrement column.

 Pearson Education, Inc. All rights reserved. 54 Common Programming Error 25.7 SQL uses the single-quote ( ' ) character as a delimiter for strings. To specify a string containing a single quote (e.g., O’Malley) in a SQL statement, the string must have two single quotes in the position where the single-quote character appears in the string (e.g., 'O''Malley' ). The first of the two single-quote characters acts as an escape character for the second. Not escaping single-quote characters in a string that is part of a SQL statement is a SQL syntax error.

 2005 Pearson Education, Inc. All rights reserved UPDATE Statement Modify data in a table – UPDATE tableName SET columnName1 = value1, …, columnNameN = valueN WHERE criteria UPDATE authors SET lastName = ‘Jones’ WHERE lastName = ‘Smith’ AND firstName = ‘Sue’

 Pearson Education, Inc. All rights reserved. 56 Fig | Sample data from table authors after an UPDATE operation.

 2005 Pearson Education, Inc. All rights reserved DELETE Statement Remove data from a table – DELETE FROM tableName WHERE criteria DELETE FROM authors WHERE lastName = ‘Jones’ AND firstName = ‘Sue’

 Pearson Education, Inc. All rights reserved. 58 Fig | Sample data from table authors after a DELETE operation.

 2005 Pearson Education, Inc. All rights reserved Instructions to Install MySQL and MySQL Connector/J Install MySQL – Platform-specific installation requirements: dev.mysql.com/doc/refman/5.0/en/general- installation-issues.html – Download your platform’s installer from: dev.mysql.com/downloads/mysql/5.0.html Need only the Windows Essentials package on Microsoft Windows – Follow installation instructions for your platform: dev.mysql.com/doc/refman/5.0/en/installing. html

 2005 Pearson Education, Inc. All rights reserved Instructions to Install MySQL and MySQL Connector/J MySQL Server Instance Configuration Wizard – Click Next > then select Standard Configuration and click Next > again. – Not necessary to install MySQL as a Windows service for our examples Uncheck Install as a Windows Service Check Include Bin Directory in Windows PATH – Click Next > then click Execute to perform the server configuration. – Click Finish to close the wizard.

 2005 Pearson Education, Inc. All rights reserved Instructions to Install MySQL and MySQL Connector/J Install MySQL Connector/J – Must install Connector/J JDBC driver from: dev.mysql.com/downloads/connector/j/ 5.0.html – Download mysql-connector-java zip – Extract mysql-connector-java zip to your hard disk into the folder mysql-connector-java – Documentation for MySQL Connector/J is in connector-j.pdf in the docs subdirectory of mysql-connector-java – Docs also online at dev.mysql.com/doc/connector/j/en/ connector-j.html

 2005 Pearson Education, Inc. All rights reserved Instructions on Setting MySQL User Account Set up a user account – Start database server mysqld-nt.exe on Windows – Start the MySQL monitor mysql –h localhost –u root – Select the built-in database mysql USE mysql; – Add the user account jhtp7 and specify privileges create user identified by 'jhtp7'; grant select, insert, update, delete, create, drop, references, execute on *.* to – Exit the MySQL Monitor exit;

 2005 Pearson Education, Inc. All rights reserved Creating Database books in MySQL Create books database – Open Command Prompt and change to the directory containing the SQL script books.sql – Start the MySQL monitor mysql –h localhost –u jhtp7 –p – Execute the script source books.sql; – Exit the MySQL Monitor exit;

 2005 Pearson Education, Inc. All rights reserved Manipulating Databases with JDBC Connect to a database Query the database Display the results of the query in JTable

 2005 Pearson Education, Inc. All rights reserved Connecting to and Querying a Database DisplayAuthors – Retrieves the entire authors table – Displays the data in the standard output stream – Example illustrates Connect to the database Query the database Process the result

 Pearson Education, Inc. All rights reserved. 66 Outline DisplayAuthors.java (1 of 3 ) Imports for the JDBC classes and interfaces from package java.sql Declare a String constant that specifies the JDBC driver’s class name Loads the class definition for the database driver. Declare a String constant that specifies the database URL

 Pearson Education, Inc. All rights reserved. 67 Outline DisplayAuthors.java (2 of 3 ) Invokes Connection method createStatement to obtain an object that implements interface Statement. Use the Statement object’s executeQuery method to execute a query that selects all the author information from table authors. Obtains the metadata for the ResultSet. Uses ResultSetMetaData method getColumnCount to retrieve the number of columns in the ResultSet. Obtain column name using method getColumnName Position the ResultSet cursor to the first row in the ResultSet with method next Extract the contents of one column in the current row Initialize a Connection reference called connection.

 Pearson Education, Inc. All rights reserved. 68 Outline DisplayAuthors.java (3 of 3 ) Catch SQLException, which is thrown if the query execution or ResultSet process fails ClassNotFoundException is thrown if the class loader cannot locate the driver class Close the Statement and the database Connection.

 Pearson Education, Inc. All rights reserved. 69 Software Engineering Observation 25.4 Most major database vendors provide their own JDBC database drivers, and many third-party vendors provide JDBC drivers as well. For more information on JDBC drivers, visit the Sun Microsystems JDBC Web site, servlet.java.sun.com/products/ jdbc/drivers.

 Pearson Education, Inc. All rights reserved. 70 Software Engineering Observation 25.5 Most database management systems require the user to log in before accessing the database contents. DriverManager method getConnection is overloaded with versions that enable the program to supply the user name and password to gain access.

 Pearson Education, Inc. All rights reserved. 71 Fig | Popular JDBC database URL formats.

 Pearson Education, Inc. All rights reserved. 72 Software Engineering Observation 25.6 Metadata enables programs to process ResultSet contents dynamically when detailed information about the ResultSet is not known in advance.

 Pearson Education, Inc. All rights reserved. 73 Common Programming Error 25.8 Initially, a ResultSet cursor is positioned before the first row. Attempting to access a ResultSet ’s contents before positioning the ResultSet cursor to the first row with method next causes a SQLException.

 Pearson Education, Inc. All rights reserved. 74 Performance Tip 25.1 If a query specifies the exact columns to select from the database, the ResultSet contains the columns in the specified order. In this case, using the column number to obtain the column’s value is more efficient than using the column name. The column number provides direct access to the specified column. Using the column name requires a search of the column names to locate the appropriate column.

 Pearson Education, Inc. All rights reserved. 75 Common Programming Error 25.9 Specifying column number 0 when obtaining values from a ResultSet causes a SQLException.

 Pearson Education, Inc. All rights reserved. 76 Common Programming Error Attempting to manipulate a ResultSet after closing the Statement that created the ResultSet causes a SQLException. The program discards the ResultSet when the corresponding Statement is closed.

 Pearson Education, Inc. All rights reserved. 77 Software Engineering Observation 25.7 Each Statement object can open only one ResultSet object at a time. When a Statement returns a new ResultSet, the Statement closes the prior ResultSet. To use multiple ResultSet s in parallel, separate Statement objects must return the ResultSet s.

 2005 Pearson Education, Inc. All rights reserved Querying the books Database Allow the user to enter any query into the program Display the results of a query in a JTable

 Pearson Education, Inc. All rights reserved. 79 Outline ResultSetTable Model.java (1 of 7 ) Class ResultSetTableModel extends class AbstractTableModel, which implements interface TableModel. Instance variable keeps track of database connection status

 Pearson Education, Inc. All rights reserved. 80 Outline ResultSetTable Model.java (2 of 7 ) Establishes a connection to the database. Invokes Connection method createStatement to create a Statement object. Constructor accepts five String arguments—the driver class name, the database URL, the username, the password and the default query to perform Indicate that connect to database is successful Invokes ResultSetTableModel method setQuery to perform the default query.

 Pearson Education, Inc. All rights reserved. 81 Outline ResultSetTable Model.java (3 of 7 ) Override method getColumnClass to obtain a Class object that represents the superclass of all objects in a particular column Verify database connection status Loads the class definition for the class and returns the corresponding Class object. Returns the default type. Obtains the fully qualified class name for the specified column. Override method getColumnCount to obtain the number of columns in the model’s underlying ResultSet

 Pearson Education, Inc. All rights reserved. 82 Outline ResultSetTable Model.java (4 of 7 ) Obtains the number of columns in the ResultSet. Override method getColumnName to obtain the name of the column in the model’s underlying ResultSet Obtains the column name from the ResultSet.

 Pearson Education, Inc. All rights reserved. 83 Outline ResultSetTable Model.java (5 of 7 ) Override method getColumnCount to obtain the number of rows in the model’s underlying ResultSet Uses ResultSet method absolute to position the ResultSet cursor at a specific row. Override method getValueAt to obtain the Object in a particular row and column of the model’s underlying ResultSet Uses ResultSet method getObject to obtain the Object in a specific column of the current row.

 Pearson Education, Inc. All rights reserved. 84 Outline ResultSetTable Model.java (6 of 7 ) Executes the query to obtain a new ResultSet. Uses ResultSet method last to position the ResultSet cursor at the last row in the ResultSet. Uses ResultSet method getRow to obtain the row number for the current row in the ResultSet. Invokes method fireTableAStructureChanged to notify any JTable using this ResultSetTableModel object as its model that the structure of the model has changed.

 Pearson Education, Inc. All rights reserved. 85 Outline ResultSetTable Model.java (7 of 7 ) Method disconnectFromDatabase implement an appropriate termination method for class ResultSetTableModel Verify whether the connection is already terminated Close the Statement and Connection if a ResultSetTableModel object is garbage collected. Set connectedToDatabase to false to ensure that clients do not use an instance of ResultSetTableModel after that instance has already been terminated

 Pearson Education, Inc. All rights reserved. 86 Fig | ResultSet constants for specifying ResultSet type.

 Pearson Education, Inc. All rights reserved. 87 Portability Tip 25.3 Some JDBC drivers do not support scrollable ResultSet s. In such cases, the driver typically returns a ResultSet in which the cursor can move only forward. For more information, see your database driver documentation.

 Pearson Education, Inc. All rights reserved. 88 Portability Tip 25.4 Some JDBC drivers do not support updatable ResultSet s. In such cases, the driver typically returns a read-only ResultSet. For more information, see your database driver documentation.

 Pearson Education, Inc. All rights reserved. 89 Common Programming Error Attempting to update a ResultSet when the database driver does not support updatable ResultSet s causes SQLFeatureNotSupportedException s.

 Pearson Education, Inc. All rights reserved. 90 Common Programming Error Attempting to move the cursor backward through a ResultSet when the database driver does not support backward scrolling causes a SQLException.

 Pearson Education, Inc. All rights reserved. 91 Fig | ResultSet constants for specifying result properties.

 Pearson Education, Inc. All rights reserved. 92 Outline DisplayQuery Results.java (1 of 8 ) Declare the database driver class name, database URL, username and password for accessing the database

 Pearson Education, Inc. All rights reserved. 93 Outline DisplayQuery Results.java (2 of 8 ) Declare the default queryDeclare tableModel to be a reference to ResultSetTableModel Create TableModel for results of default query “SELECT * FROM authors”

 Pearson Education, Inc. All rights reserved. 94 Outline DisplayQuery Results.java (3 of 8 ) Create JTable delegate for tableModel

 Pearson Education, Inc. All rights reserved. 95 Outline DisplayQuery Results.java (4 of 8 ) Register an event handler for the submitButton that the user clicks to submit a query to the database Invoke ResultSetTableModel method setQuery to execute the new query

 Pearson Education, Inc. All rights reserved. 96 Outline DisplayQuery Results.java (5 of 8 ) Ensure that the database connection is closed Set up TableRowSorter No filter initially

 Pearson Education, Inc. All rights reserved. 97 Outline DisplayQuery Results.java (6 of 8 ) Set filter using regular expression

 Pearson Education, Inc. All rights reserved. 98 Outline DisplayQuery Results.java (7 of 8 ) Ensure that the database connection is closed Ensure that the database connection is closed when window is closed

 Pearson Education, Inc. All rights reserved. 99 Outline DisplayQuery Results.java (8 of 8 )

 2005 Pearson Education, Inc. All rights reserved RowSet Interface Interface RowSet – Configures the database connection automatically – Prepares query statements automatically – Provides set methods to specify the properties needed to establish a connection – Part of the javax.sql package Two types of RowSet – Connected RowSet Connects to database once and remain connected – Disconnected RowSet Connects to database, executes a query and then closes connection

 2005 Pearson Education, Inc. All rights reserved RowSet Interface (Cont.) Package javax.sql.rowset – JdbcRowSet Connected RowSet Wrapper around a ResultSet Scrollable and updatable by default – CachedRowSet Disconnected RowSet Cache the data of ResultSet in memory Scrollable and updatable by default Serializable – Can be passed between Java application Limitation – Amount of data that can be stored in memory is limited

 Pearson Education, Inc. All rights reserved. 102 Portability Tip 25.5 A RowSet can provide scrolling capability for drivers that do not support scrollable ResultSet s.

 Pearson Education, Inc. All rights reserved. 103 Outline JdbcRowSetTest.java (1 of 3 )

 Pearson Education, Inc. All rights reserved. 104 Outline JdbcRowSetTest.java (2 of 3 ) Use Sun’s reference implementation of JdbcRowSet interface ( JdbcRowSetImpl ) to create a JdbcRowSet object Invoke JdbcRowSet method setUrl to specify the database URL Invoke JdbcRowSet method setUsername to specify the username Invoke JdbcRowSet method setUsername to specify the password Invoke JdbcRowSet method setCommand to specify the query Invoke JdbcRowSet method execute to execute the query

 Pearson Education, Inc. All rights reserved. 105 Outline JdbcRowSetTest.java (3 of 3 )

 2005 Pearson Education, Inc. All rights reserved Java DB/Apache Derby As of JDK 6, Sun Microsystems now bundles the open-source, pure Java database Java DB (the Sun branded version of Apache Derby) with the JDK We use the embedded version of Java DB There is also a network version that executes similarly to the MySQL DBMS introduced earlier in the chapter

 2005 Pearson Education, Inc. All rights reserved Java DB/Apache Derby Java DB comes with several batch files to configure and run it First set the environment variable JAVA_HOME to refer to the JDK’s C:\Program Files\Java\jdk1.6.0 installation directory Open the batch file setEmbeddedCP.bat (located in C:\Program Files\Java\jdk1.6.0\db\frameworks\embedded\bin ) in a text editor such as Notepad Locate the line rem set DERBY_INSTALL= and change it to set DERBY_INSTALL=C:\Program Files\Java\jdk1.6.0\db Also, comment out the %X in ("%DERBY_HOME%") DO SET DERBY_HOME=%~sX by preceding it with REM Save your changes and close this file

 2005 Pearson Education, Inc. All rights reserved Java DB/Apache Derby Change directories to C:\Program Files\Java\ jdk1.6.0\db\frameworks\embedded\bin\. Then, type setEmbeddedCP.bat and press Enter to set the environment variables required by Java DB. Embedded Java DB database must reside in the same location as the application that manipulates the database – Change to the directory that contains the code for Figs – Execute the command "C:\Program Files\Java\jdk1.6.0\db\frameworks\embedded\bin\ij" to start the command-line tool for interacting with Java DB. The double quotes are necessary because the path contains a space.

 2005 Pearson Education, Inc. All rights reserved Java DB/Apache Derby At the ij> prompt type connect 'jdbc:derby:AddressBook;create=true; user=jhtp7;password=jhtp7'; to create the AddressBook database in the current directory. This command also creates the user jhtp7 with the password jhtp7 for accessing the database. To create the database table and insert sample data in the database type run 'address.sql'; To terminate the Java DB command-line tool, type exit;

 2005 Pearson Education, Inc. All rights reserved PreparedStatements PreparedStatement s execute more efficiently than Statement objects PreparedStatement s can specify parameters

 2005 Pearson Education, Inc. All rights reserved PreparedStatements PreparedStatement to locate all book titles for an author with a specific last name and first name, and to execute that query for several authors: – PreparedStatement authorBooks = connection.prepareStatement( "SELECT lastName, firstName, title " + "FROM authors INNER JOIN authorISBN " + "ON authors.authorID=authorISBN.authorID " + "INNER JOIN titles " + "ON authorISBN.isbn=titles.isbn " + "WHERE lastName = ? AND firstName = ?" ); Question marks (?) are placeholders for values that will be passed as part of the query to the database

 2005 Pearson Education, Inc. All rights reserved PreparedStatements Program must specify the parameter values by using the PreparedStatement interface’s set methods. For the preceding query, both parameters are strings that can be set with PreparedStatement method setString as follows: authorBooks.setString( 1, "Deitel" ); authorBooks.setString( 2, "Paul" ); setString automatically escapes String parameter values as necessary (e.g., the quote in the name O’Brien) More info at java.sun.com/javase/6/docs/api/ java/sql/PreparedStatement.html

 Pearson Education, Inc. All rights reserved. 113 Performance Tip 25.2 PreparedStatement s are more efficient than Statement s when executing SQL statements multiple times and with different parameter values.

 Pearson Education, Inc. All rights reserved. 114 Error-Prevention Tip 25.1 Use PreparedStatement s with parameters for queries that receive String values as arguments to ensure that the String s are quoted properly in the SQL statement.

 Pearson Education, Inc. All rights reserved. 115 Outline Person.java (1 of 3 )

 Pearson Education, Inc. All rights reserved. 116 Outline Person.java (2 of 3 )

 Pearson Education, Inc. All rights reserved. 117 Outline Person.java (3 of 3 )

 Pearson Education, Inc. All rights reserved. 118 Outline PersonQueries.java (1 of 7 ) All program to use PreparedStatement s Declare PreparedStatement s Note that we do not load the Java DB driver first. JDBC 4’s automatic driver discovery is used here.

 Pearson Education, Inc. All rights reserved. 119 Outline PersonQueries.java (2 of 7 ) Configure each PreparedStatement. Each ? represents a parameter.

 Pearson Education, Inc. All rights reserved. 120 Outline PersonQueries.java (3 of 7 ) Executes the query in PreparedStatement selectAllPeople. Process the ResultSet.

 Pearson Education, Inc. All rights reserved. 121 Outline PersonQueries.java (4 of 7 ) Specify the parameter to PreparedStatement selectPeopleByLastName. Executes the query in PreparedStatement selectPeopleByLastName.

 Pearson Education, Inc. All rights reserved. 122 Outline PersonQueries.java (5 of 7 ) Process the ResultSet.

 Pearson Education, Inc. All rights reserved. 123 Outline PersonQueries.java (6 of 7 ) Specify the parameters to PreparedStatement insertNewPerson. Executes the insert operation in PreparedStatement insertNewPerson.

 Pearson Education, Inc. All rights reserved. 124 Outline PersonQueries.java (7 of 7 )

 Pearson Education, Inc. All rights reserved. 125 Outline AddressBook Display.java (1 of 14 )

 Pearson Education, Inc. All rights reserved. 126 Outline AddressBook Display.java (2 of 14 )

 Pearson Education, Inc. All rights reserved. 127 Outline AddressBook Display.java (3 of 14 )

 Pearson Education, Inc. All rights reserved. 128 Outline AddressBook Display.java (4 of 14 )

 Pearson Education, Inc. All rights reserved. 129 Outline AddressBook Display.java (5 of 14 )

 Pearson Education, Inc. All rights reserved. 130 Outline AddressBook Display.java (6 of 14 )

 Pearson Education, Inc. All rights reserved. 131 Outline AddressBook Display.java (7 of 14 )

 Pearson Education, Inc. All rights reserved. 132 Outline AddressBook Display.java (8 of 14 )

 Pearson Education, Inc. All rights reserved. 133 Outline AddressBook Display.java (9 of 14 )

 Pearson Education, Inc. All rights reserved. 134 Outline AddressBook Display.java (10 of 14 ) Executes the query in PreparedStatement selectPeopleByLastName from class PersonQueries.

 Pearson Education, Inc. All rights reserved. 135 Outline AddressBook Display.java (11 of 14 )

 Pearson Education, Inc. All rights reserved. 136 Outline AddressBook Display.java (12 of 14 ) Executes the query in PreparedStatement selectAllPeople from class PersonQueries.

 Pearson Education, Inc. All rights reserved. 137 Outline AddressBook Display.java (13 of 14 ) Executes the insert operation in PreparedStatement insertNewPerson from class PersonQueries.

 Pearson Education, Inc. All rights reserved. 138 Outline AddressBook Display.java (14 of 14 )

 2005 Pearson Education, Inc. All rights reserved Stored Procedures Stored procedures – Store SQL statements in a database – Invoke SQL statements by programs accessing the database Interface CallableStatement – Receive arguments – Output parameters

 Pearson Education, Inc. All rights reserved. 140 Portability Tip 25.6 Although the syntax for creating stored procedures differs across database management systems, the interface CallableStatement provides a uniform interface for specifying input and output parameters for stored procedures and for invoking stored procedures.

 Pearson Education, Inc. All rights reserved. 141 Portability Tip 25.7 According to the Java API documentation for interface CallableStatement, for maximum portability between database systems, programs should process the update counts or ResultSet s returned from a CallableStatement before obtaining the values of any output parameters.

 2005 Pearson Education, Inc. All rights reserved Transaction Processing Many applications require guarantees that a series of database insertions, updates and deletions executes properly before the applications continue processing the next database operation Enables a program that interacts with a database to treat a database operation (or set of operations) as a single operation – Known as an atomic operation or a transaction – At the end of a transaction, decide to commit or roll back

 2005 Pearson Education, Inc. All rights reserved Transaction Processing Committing a transaction finalizes the database operation(s); all insertions, updates and deletions performed as part of the transaction cannot be reversed without performing a new database operation Rolling back a transaction leaves the database in its state prior to the database operation

 2005 Pearson Education, Inc. All rights reserved Transaction Processing Methods of interface Connection – setAutoCommit specifies whether each SQL statement commits after it completes (a true argument) or if several SQL statements should be grouped as a transaction (a false argument) If the argument to setAutoCommit is false, the program must follow the last SQL statement in the transaction with a call to Connection method commit or rollback – getAutoCommit determines the autocommit state for the Connection.