Your SlideShare is downloading. ×
Slides 02
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Saving this for later?

Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime - even offline.

Text the download link to your phone

Standard text messaging rates apply

Slides 02

578
views

Published on


0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
578
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
11
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide
  • 4
  • Transcript

    • 1. CS122B: Projects in Database Management Winter 2010 Notes 2: Database Connectivity Professor Chen Li Department of Computer Science UC Irvine
    • 2. Outline
      • Motivation
      • Architecture
      • 7 steps
      • Sample program
      • Metadata
      CS122B Notes 02: Database Connectivity
    • 3. Motivation
      • Most popular form of database system is the relational database system.
        • Examples: MS Access, Sybase, Oracle, MS Sequel Server, Postgres.
      • Structured Query Language (SQL) is used among relational databases to construct queries.
      • Applications need to query databases
      CS122B Notes 02: Database Connectivity
    • 4. Simple Database Application CS122B Notes 02: Database Connectivity Ex: Access Oracle Sybase A P P L I C A T I O N DBMS DB
    • 5. Multi-Databases CS122B Notes 02: Database Connectivity A P P L I C A T I O N DBMS 1 DBMS 2 DBMS 3 DB DB DB
    • 6. Standard Access to DB CS122B Notes 02: Database Connectivity A P P L I C A T I O N D R I V E R M G R DBMS Driver 1 DBMS Driver 2 DBMS Driver 3 DBMS 1 DBMS 2 DBMS 3 DB DB DB
    • 7. ODBC Architecture CS122B Notes 02: Database Connectivity Application Class1 Class2 Driver Manager DataSource2 DataSource1 DataSource3 ODBC DriverType1 DriverType2 DriverType3
    • 8. Open Database Connectivity (ODBC) Standard
      • ODBC standard is an interface by which application programs can access and process SQL databases in a DBMS-independent manner. It contains:
        • A Data Source that is the database, its associated DBMS, operating system and network platform
        • A DBMS Driver that is supplied by the DBMS vendor (e.g., Oracle, IBM, MS) or independent software companies
        • A Driver Manager that is supplied by the vendor of the O/S platform (e.g., Windows/UNIX/Mac) where the application is running
        • E.g Control Panel->Administrative Tools->Data Sources (ODBC)
        • in Windows. You can use ODBC to access MS Access or even Excel documents using the corresponding drivers.
      CS122B Notes 02: Database Connectivity
    • 9. ODBC Interface
      • System-independent interface to database environment
        • requires an ODBC driver to be provided for each database system from which you want to manipulate data.
      • The ODBC driver manager bridges the differences between
        • The ODBC DBMS-independent interface and the DBMS-dependent interface of the DBMS driver
      CS122B Notes 02: Database Connectivity
    • 10. An Example CS122B Notes 02: Database Connectivity Application DriverManager MySQL Driver DB2 driver SQLServer driver odbc standard API
    • 11. Java Support for Database Connectivity
      • When applications written in Java want to access data sources, they use classes and associated methods provided by Java DBC (JDBC) API.
      • JDBC is specified an “interface.”
      • An interface in Java can have many “implementations.”
        • it provides a convenient way to realize many “drivers”
      • JDBC can be an interface to an ODBC driver manager.
      • Also it provides a JDBC API as a standard way to directly connect to common relational databases.
      CS122B Notes 02: Database Connectivity
    • 12. Application in Java CS122B Notes 02: Database Connectivity Application in Java DriverManager odbc standard API jdbc API MySQL Driver DB2 driver SQLServer driver
    • 13. Application in Java CS122B Notes 02: Database Connectivity Application in Java MySQL Driver Jdbc API
    • 14. Java Support for SQL
      • Java supports embedded SQL .
        • Embedded SQL in Java (SQLJ is one version of it) p rovide s a standardized way for Java programs to interact with multi ple databases, but at a higher level than the existing JDBC API.
        • Embedded SQL allows connect ing to a database by includ ing SQL code right in the program .
        • An Embedded SQL preprocessor converts the SQL statements to Java code at pre-compile time.   The preprocessor generates code that includes the driver functionality for d irect connection to the  DBMS via JDBC.
      • java.sql package and an extensive exception hierarchy.
      • We will examine a direct pure Java JDBC driver using sample code.
      CS122B Notes 02: Database Connectivity
    • 15. An JDBC example
      • JdbcExample.java
      CS122B Notes 02: Database Connectivity
    • 16. Data Source and Driver
      • Data source: database created using any of the common database applications.
      • Your system should have the driver for the database you will be using.
        • E.g., MS SQL Server on a Windows system.
      • There are a number of JDBC drivers available.
        • http://industry.java.sun.com/products/jdbc/drivers
      CS122B Notes 02: Database Connectivity
    • 17. JDBC Components
      • Driver Manager : Loads database drivers, and manages the connection between application & driver.
      • Driver : Translates API calls to operations for a specific data source.
      • Connection : A session between an application and a driver.
      • Statement : A SQL statement to perform a query or an update operation.
      • Metadata : Information about the returned data, driver and the database.
      • Result Set : Logical set of columns and rows returned by executing a statement.
      CS122B Notes 02: Database Connectivity
    • 18. JDBC Classes
      • Java supports DB facilities by providing classes and interfaces for its components
      • DriverManager class
      • Connection interface (abstract class)
      • Statement interface (to be instantiated with values from the actual SQL statement)
      • ResultSet interface
      CS122B Notes 02: Database Connectivity
    • 19. java.sql
      • JDBC is implemented via classes in the java.sql package
        • Supports SQL-2 entry level
      • Define objects for:
        • Remote connection to DB
        • Executing query
      • 8 interfaces to define objects:
        • Statement, CallableStatement, PreparedStatement, DatabaseMetaData, ResultSetMetaData, ResultSet, Connection, Driver
      Notes 02: Database Connectivity
    • 20. CS122B Notes 02: Database Connectivity DriverManager Driver Connection Statement ResultSet
      • Load the driver
      • Define the Connection URL
      • Establish the Connection
      • Create a Statement object
      • Execute a query
      • Process the result
      • Close the connection
      Seven Steps
    • 21. Loading the Driver
      • Registering the driver directly automatically:
      • Class.forName(“ com.mysql.jdbc.Driver ");
      • Calling Class.forName , which automatically
        • creates an instance of the driver
        • registers the driver with the DriverManager
      CS122B Notes 02: Database Connectivity
    • 22. Identifying Data Sources
      • Gives the required information for making the connection to the database
      • Specified using the URL format.
      • <scheme>: <sub_scheme>:<scheme-specific-part>
      • Example:
      • jdbc:postgresql://foo.ics.uci.edu/mydatabase
      • jdbc:postgresql://localhost/testdb
      • jdbc:mysql:///mydb
      CS122B Notes 02: Database Connectivity
    • 23. Connection
      • A Connection represents a session with a specific database
      • Within the context of a Connection, SQL statements are executed and results are returned
      CS122B Notes 02: Database Connectivity
    • 24. Connections
      • There can be multiple connections to a database
      • A connection provides “metadata”, i.e., information about the database, tables, and fields
      • Connection object has methods to deal with transactions
      CS122B Notes 02: Database Connectivity
    • 25. Creating a Connection
      • Use getConnection on the Driver
      • Connection getConnection
      • (String url,
      • String user,
      • String password)
      • Connects to given JDBC URL with given user name and password
      • Throws java.sql.SQLException
      • returns a Connection object
      CS122B Notes 02: Database Connectivity
    • 26. Creating a Connection
      • Connection connection = DriverManager.getConnection(&quot;jdbc:mysql:///mydb&quot;, &quot;testuser&quot;, &quot;mypassword&quot;);
      CS122B Notes 02: Database Connectivity
    • 27. Statements
      • Statement createStatement()
        • returns a new Statement object
        • Used for general queries
      • PreparedStatement prepareStatement(String sql)
        • returns a new PreparedStatement object
        • For a statement called multiple times with different values (precompiled to reduce parsing time)
      • CallableStatement prepareCall(String sql)
        • returns a new CallableStatement object
        • For stored procedures
      CS122B Notes 02: Database Connectivity
    • 28. Statements
      • A Statement object is used for executing a static SQL statement and obtaining the results produced by it
      • executeQuery is used for statements that return an output result
      • executeUpdate is used for statements that need not return an output
      CS122B Notes 02: Database Connectivity
    • 29. Executing Queries and Updates
      • ResultSet executeQuery(String)
        • Execute a SQL statement that returns a single ResultSet
      • int executeUpdate(String)
        • Execute a SQL INSERT, UPDATE or DELETE statement
        • Used for CREATE TABLE, DROP TABLE and ALTER TABLE
        • Returns the number of rows changed
      CS122B Notes 02: Database Connectivity
    • 30. Timeout
      • Use setQueryTimeOut to set a timeout for the driver to wait for a statement to be completed
      • If the operation is not completed in the given time, an SQLException is thrown
      • What is it good for?
      CS122B Notes 02: Database Connectivity
    • 31. Cursor
      • What is the result of a query?
      • How can a database send the result of a query through communication lines?
      • The answer: using a cursor
      CS122B Notes 02: Database Connectivity
    • 32. Result Set
      • A ResultSet provides access to a table of data generated by executing a Statement
      • Only one ResultSet per Statement can be open at once
      • The table rows are retrieved in sequence
      • A ResultSet maintains a cursor pointing to its current row of data
      • The 'next' method moves the cursor to the next row
        • you can’t rewind
      CS122B Notes 02: Database Connectivity
    • 33. Working with ResultSet
      • boolean next()
        • activates the next row
        • the first call to next() activates the first row
        • returns false if there are no more rows
      • void close()
        • disposes of the ResultSet
        • automatically called by most Statement methods
      CS122B Notes 02: Database Connectivity
    • 34.
      • Type get Type (int columnIndex)
        • returns the given field as the given type
        • E.g., int getInt(5); string getString(3);
        • fields indexed starting at 1 (not 0)
      • Type get Type (String columnName)
        • same, but uses name of field
        • less efficient
      • int findColumn(String columnName)
        • looks up column index given column name
      Getting Values from Rows Notes 02: Database Connectivity
    • 35. isNull
      • In SQL, NULL means the field is empty
      • Not the same as 0 or “”
      • In JDBC, you must explicitly ask if a field is null by calling ResultSet.isNull(column)
      Notes 02: Database Connectivity
    • 36. Mapping Java Types to SQL Types
      • SQL type Java Type
      • CHAR, VARCHAR , LONGVARCHAR String
      • NUMERIC , DECIMAL java.math.BigDecimal
      • BIT boolean
      • TINYINT byte
      • SMALLINT short
      • INTEGER int
      • BIGINT long
      • REAL float
      • FLOAT, DOUBLE double
      • BINARY, VARBINARY , LONGVARBINARY byte[]
      • DATE java.sql.Date
      • TIME java.sql.Time
      • TIMESTAMP java.sql.Timestamp
      Notes 02: Database Connectivity
    • 37. Database Time
      • Times in SQL are nonstandard
      • Java defines three classes to help
      • java.sql.Date
        • year, month, day
      • java.sql.Time
        • hours, minutes, seconds
      • java.sql.Timestamp
        • year, month, day, hours, minutes, seconds, nanoseconds
        • usually use this one
      Notes 02: Database Connectivity
    • 38. Optimized Statements
      • Prepared Statements
        • SQL calls that you make again and again
        • allows driver to optimize (compile) queries
        • created with Connection.prepareStatement()
      • Stored Procedures
        • written in DB-specific language
        • stored inside database
        • accessed with Connection.prepareCall()
      CS122B Notes 02: Database Connectivity
    • 39. Prepared Statement Example
      • PreparedStatement updateSales;
      • String updateString = &quot; update COFFEES &quot; +
      • &quot; set SALES = ? where COF_NAME like ? &quot;;
      • updateSales = con.prepareStatement(updateString);
      • int [] salesForWeek = {175, 150, 60, 155, 90};
      • String [] coffees = {&quot;Colombian&quot;, &quot;French_Roast&quot;, &quot;Espresso&quot;,&quot;Colombian_Decaf&quot;,&quot;French_Roast_Decaf&quot;};
      • int len = coffees.length;
      • for(int i = 0; i < len; i++) {
      • updateSales.setInt(1, salesForWeek[i]); updateSales.setString(2, coffees[i]); updateSales.executeUpdate();
      • }
      CS122B Notes 02: Database Connectivity
    • 40. JDBC Class Diagram Notes 02: Database Connectivity
    • 41. Metadata
      • Connection:
        • DatabaseMetaData getMetaData()
      • ResultSet:
        • ResultSetMetaData getMetaData()
      CS122B Notes 02: Database Connectivity
    • 42. ResultSetMetaData
      • What's the number of columns in the ResultSet?
      • What's a column's name?
      • What's a column's SQL type?
      • What's the column's normal max width in chars?
      • What's the suggested column title for use in printouts and displays?
      • What's a column's number of decimal digits?
      • Does a column's case matter?
      • and so on...
      Notes 02: Database Connectivity
    • 43. DatabaseMetaData
      • What tables are available?
      • What's our user name as known to the database?
      • Is the database in read-only mode?
      • If table correlation names are supported (association of a column with the table it comes from, when multiple columns of the same name appear in the same query - multi-table queries) , are they restricted to be different from the names of the tables?
      • and so on…
      Notes 02: Database Connectivity
    • 44. Useful Methods of Metadata
      • getColumnCount
      • getColumnDisplaySize
      • getColumnName
      • getColumnType
      • isNullabale
      • Imagine the case where you want to print the result
      CS122B Notes 02: Database Connectivity
    • 45. Transaction Management
      • A transaction: a sequence of SQL statements
      • Transactions are not explicitly opened and closed
      • Instead, the connection has a state called AutoCommit mode
      • if AutoCommit is true, then every statement is automatically committed
      • default case: true
      CS122B Notes 02: Database Connectivity
    • 46. AutoCommit
      • Connection.setAutoCommit(boolean)
      • if AutoCommit is false, then every statement is added to an ongoing transaction
      • you must explicitly commit or rollback the transaction using Connection.commit() and Connection.rollback()
      CS122B Notes 02: Database Connectivity
    • 47. AutoCommit (cont)
      • Check:
      • http://java.sun.com/docs/books/tutorial/jdbc/basics/transactions.html
      • http://www.devx.com/tips/Tip/15015
      • There's a slight difference between doing them in SQL and JDBC: auto-commit control and commit call in JDBC are Java calls (not SQL).
      CS122B Notes 02: Database Connectivity
    • 48. Connection Manager
      • For a large threaded database server, create a Connection Manager object
      • It is responsible for maintaining a certain number of open connections to the database
      • When your applications need a connection, they ask for one from the CM’s pool
      • Why? Because opening and closing connections takes a long time
      • Warning: the CM should always setAutoCommit(false) when a connection is returned
      CS122B Notes 02: Database Connectivity
    • 49. More info
      • Go through the tutorial at: http://developer.java.sun.com/developer/onlineTraining/Database/JDBC20Intro/
      • http://java.sun.com/products/jdbc/learning.html
      CS122B Notes 02: Database Connectivity