JDBC and Database Programming in Java. Introduction u Database Access in Java u Find out any...
-
Upload
ernest-allison -
Category
Documents
-
view
234 -
download
0
Transcript of JDBC and Database Programming in Java. Introduction u Database Access in Java u Find out any...
![Page 1: JDBC and Database Programming in Java. Introduction u Database Access in Java u Find out any relevant background and interest of the audience u SQL gurus?](https://reader030.fdocuments.net/reader030/viewer/2022032605/56649e855503460f94b884e2/html5/thumbnails/1.jpg)
JDBC and Database JDBC and Database Programming in JavaProgramming in Java
![Page 2: JDBC and Database Programming in Java. Introduction u Database Access in Java u Find out any relevant background and interest of the audience u SQL gurus?](https://reader030.fdocuments.net/reader030/viewer/2022032605/56649e855503460f94b884e2/html5/thumbnails/2.jpg)
Introduction Introduction
Database Access in Java Find out any relevant background and
interest of the audience SQL gurus? Visual Basic Database Forms?
![Page 3: JDBC and Database Programming in Java. Introduction u Database Access in Java u Find out any relevant background and interest of the audience u SQL gurus?](https://reader030.fdocuments.net/reader030/viewer/2022032605/56649e855503460f94b884e2/html5/thumbnails/3.jpg)
AgendaAgenda
Overview of Databases and Java Overview of JDBC JDBC APIs Other Database Techniques
![Page 4: JDBC and Database Programming in Java. Introduction u Database Access in Java u Find out any relevant background and interest of the audience u SQL gurus?](https://reader030.fdocuments.net/reader030/viewer/2022032605/56649e855503460f94b884e2/html5/thumbnails/4.jpg)
Overview Overview
TCP/IP
java.net
RMI JDBC CORBA
Network OS
around 4pm
![Page 5: JDBC and Database Programming in Java. Introduction u Database Access in Java u Find out any relevant background and interest of the audience u SQL gurus?](https://reader030.fdocuments.net/reader030/viewer/2022032605/56649e855503460f94b884e2/html5/thumbnails/5.jpg)
Part I: Overview of Databases Part I: Overview of Databases and Javaand Java
![Page 6: JDBC and Database Programming in Java. Introduction u Database Access in Java u Find out any relevant background and interest of the audience u SQL gurus?](https://reader030.fdocuments.net/reader030/viewer/2022032605/56649e855503460f94b884e2/html5/thumbnails/6.jpg)
Databases in the EnterpriseDatabases in the Enterprise
All corporate data stored in DB SQL standardizes format (sort of)
![Page 7: JDBC and Database Programming in Java. Introduction u Database Access in Java u Find out any relevant background and interest of the audience u SQL gurus?](https://reader030.fdocuments.net/reader030/viewer/2022032605/56649e855503460f94b884e2/html5/thumbnails/7.jpg)
Why Java?Why Java? Write once, run anywhere
Multiple client and server platforms
Object-relational mapping databases optimized for searching/indexing objects optimized for engineering/flexibility
Network independence Works across Internet Protocol
Database independence Java can access any database vendor
Ease of administration zero-install client
![Page 8: JDBC and Database Programming in Java. Introduction u Database Access in Java u Find out any relevant background and interest of the audience u SQL gurus?](https://reader030.fdocuments.net/reader030/viewer/2022032605/56649e855503460f94b884e2/html5/thumbnails/8.jpg)
Database ArchitecturesDatabase Architectures
Two-tier Three-tier N-tier
![Page 9: JDBC and Database Programming in Java. Introduction u Database Access in Java u Find out any relevant background and interest of the audience u SQL gurus?](https://reader030.fdocuments.net/reader030/viewer/2022032605/56649e855503460f94b884e2/html5/thumbnails/9.jpg)
Two-Tier ArchitectureTwo-Tier Architecture
Client connects directly to server e.g. HTTP, email Pro:
simple client-side scripting offloads work onto the client
Con: fat client inflexible
![Page 10: JDBC and Database Programming in Java. Introduction u Database Access in Java u Find out any relevant background and interest of the audience u SQL gurus?](https://reader030.fdocuments.net/reader030/viewer/2022032605/56649e855503460f94b884e2/html5/thumbnails/10.jpg)
Three-Tier ArchitectureThree-Tier Architecture Application Server sits between client and
database
![Page 11: JDBC and Database Programming in Java. Introduction u Database Access in Java u Find out any relevant background and interest of the audience u SQL gurus?](https://reader030.fdocuments.net/reader030/viewer/2022032605/56649e855503460f94b884e2/html5/thumbnails/11.jpg)
Three-Tier ProsThree-Tier Pros
flexible: can change one part without affecting others
can connect to different databases without changing code
specialization: presentation / business logic / data management
can cache queries can implement proxies and firewalls
![Page 12: JDBC and Database Programming in Java. Introduction u Database Access in Java u Find out any relevant background and interest of the audience u SQL gurus?](https://reader030.fdocuments.net/reader030/viewer/2022032605/56649e855503460f94b884e2/html5/thumbnails/12.jpg)
Three-Tier ConsThree-Tier Cons
higher complexity higher maintenance lower network efficiency more parts to configure (and buy)
![Page 13: JDBC and Database Programming in Java. Introduction u Database Access in Java u Find out any relevant background and interest of the audience u SQL gurus?](https://reader030.fdocuments.net/reader030/viewer/2022032605/56649e855503460f94b884e2/html5/thumbnails/13.jpg)
N-Tier ArchitectureN-Tier Architecture
Design your application using as many “tiers” as you need
Use Object-Oriented Design techniques Put the various components on whatever
host makes sense Java allows N-Tier Architecture, especially
with RMI and JDBC
![Page 14: JDBC and Database Programming in Java. Introduction u Database Access in Java u Find out any relevant background and interest of the audience u SQL gurus?](https://reader030.fdocuments.net/reader030/viewer/2022032605/56649e855503460f94b884e2/html5/thumbnails/14.jpg)
Database TechnologiesDatabase Technologies Hierarchical
obsolete (in a manner of speaking) any specialized file format can be called a hierarchical DB
Relational (aka SQL) (RDBMS) row, column most popular
Object-relational DB (ORDBMS) add inheritance, blobs to RDB NOT object-oriented -- “object” is mostly a marketing term
Object-oriented DB (OODB) data stored as objects high-performance for OO data models
![Page 15: JDBC and Database Programming in Java. Introduction u Database Access in Java u Find out any relevant background and interest of the audience u SQL gurus?](https://reader030.fdocuments.net/reader030/viewer/2022032605/56649e855503460f94b884e2/html5/thumbnails/15.jpg)
Relational DatabasesRelational Databases
invented by Dr. E.F.Codd data stored in records which live in tables maps row (record) to column (field) in a
single table “relation” (as in “relational”) means row to
column (not table to table)
![Page 16: JDBC and Database Programming in Java. Introduction u Database Access in Java u Find out any relevant background and interest of the audience u SQL gurus?](https://reader030.fdocuments.net/reader030/viewer/2022032605/56649e855503460f94b884e2/html5/thumbnails/16.jpg)
Joining TablesJoining Tables
you can associate tables with one another allows data to nest allows arbitrarily complicated data
structures not object-oriented
![Page 17: JDBC and Database Programming in Java. Introduction u Database Access in Java u Find out any relevant background and interest of the audience u SQL gurus?](https://reader030.fdocuments.net/reader030/viewer/2022032605/56649e855503460f94b884e2/html5/thumbnails/17.jpg)
Join exampleJoin example
People name homeaddress workaddress
Addresses id street state zip
![Page 18: JDBC and Database Programming in Java. Introduction u Database Access in Java u Find out any relevant background and interest of the audience u SQL gurus?](https://reader030.fdocuments.net/reader030/viewer/2022032605/56649e855503460f94b884e2/html5/thumbnails/18.jpg)
SQLSQL
Structured Query Language Standardized syntax for “querying”
(accessing) a relational database Supposedly database-independent Actually, there are important variations
from DB to DB
![Page 19: JDBC and Database Programming in Java. Introduction u Database Access in Java u Find out any relevant background and interest of the audience u SQL gurus?](https://reader030.fdocuments.net/reader030/viewer/2022032605/56649e855503460f94b884e2/html5/thumbnails/19.jpg)
SQL SyntaxSQL SyntaxINSERT INTO table ( field1, field2 ) VALUES ( value1, value2 ) inserts a new record into the named table
UPDATE table SET ( field1 = value1, field2 = value2 ) WHERE condition changes an existing record or records
DELETE FROM table WHERE condition removes all records that match condition
SELECT field1, field2 FROM table WHERE condition retrieves all records that match condition
![Page 20: JDBC and Database Programming in Java. Introduction u Database Access in Java u Find out any relevant background and interest of the audience u SQL gurus?](https://reader030.fdocuments.net/reader030/viewer/2022032605/56649e855503460f94b884e2/html5/thumbnails/20.jpg)
TransactionsTransactions
Transaction = more than one statement which must all succeed (or all fail) together
If one fails, the system must reverse all previous actions
Also can’t leave DB in inconsistent state halfway through a transaction
COMMIT = complete transaction ROLLBACK = abort
![Page 21: JDBC and Database Programming in Java. Introduction u Database Access in Java u Find out any relevant background and interest of the audience u SQL gurus?](https://reader030.fdocuments.net/reader030/viewer/2022032605/56649e855503460f94b884e2/html5/thumbnails/21.jpg)
Part II: JDBC OverviewPart II: JDBC Overview
![Page 22: JDBC and Database Programming in Java. Introduction u Database Access in Java u Find out any relevant background and interest of the audience u SQL gurus?](https://reader030.fdocuments.net/reader030/viewer/2022032605/56649e855503460f94b884e2/html5/thumbnails/22.jpg)
JDBC GoalsJDBC Goals SQL-Level 100% Pure Java Keep it simple High-performance Leverage existing database technology
why reinvent the wheel? Use strong, static typing wherever possible Use multiple methods to express multiple
functionality
![Page 23: JDBC and Database Programming in Java. Introduction u Database Access in Java u Find out any relevant background and interest of the audience u SQL gurus?](https://reader030.fdocuments.net/reader030/viewer/2022032605/56649e855503460f94b884e2/html5/thumbnails/23.jpg)
JDBC AncestryJDBC Ancestry
X/OPEN
ODBC JDBC
![Page 24: JDBC and Database Programming in Java. Introduction u Database Access in Java u Find out any relevant background and interest of the audience u SQL gurus?](https://reader030.fdocuments.net/reader030/viewer/2022032605/56649e855503460f94b884e2/html5/thumbnails/24.jpg)
JDBC ArchitectureJDBC Architecture
Application JDBC Driver
Java code calls JDBC library JDBC loads a driver Driver talks to a particular database Can have more than one driver -> more than one
database Ideal: can change database engines without changing
any application code
![Page 25: JDBC and Database Programming in Java. Introduction u Database Access in Java u Find out any relevant background and interest of the audience u SQL gurus?](https://reader030.fdocuments.net/reader030/viewer/2022032605/56649e855503460f94b884e2/html5/thumbnails/25.jpg)
JDBC DriversJDBC Drivers
Type I: “Bridge” Type II: “Native” Type III: “Middleware” Type IV: “Pure”
![Page 26: JDBC and Database Programming in Java. Introduction u Database Access in Java u Find out any relevant background and interest of the audience u SQL gurus?](https://reader030.fdocuments.net/reader030/viewer/2022032605/56649e855503460f94b884e2/html5/thumbnails/26.jpg)
JDBC Drivers (Fig.)JDBC Drivers (Fig.)
JDBC
Type I“Bridge”
Type II“Native”
Type III“Middleware”
Type IV“Pure”
ODBCODBCDriver
CLI (.lib)
MiddlewareServer
![Page 27: JDBC and Database Programming in Java. Introduction u Database Access in Java u Find out any relevant background and interest of the audience u SQL gurus?](https://reader030.fdocuments.net/reader030/viewer/2022032605/56649e855503460f94b884e2/html5/thumbnails/27.jpg)
Type I DriversType I Drivers
Use bridging technology Requires installation/configuration on client
machines Not good for Web e.g. ODBC Bridge
![Page 28: JDBC and Database Programming in Java. Introduction u Database Access in Java u Find out any relevant background and interest of the audience u SQL gurus?](https://reader030.fdocuments.net/reader030/viewer/2022032605/56649e855503460f94b884e2/html5/thumbnails/28.jpg)
Type II DriversType II Drivers
Native API drivers Requires installation/configuration on client
machines Used to leverage existing CLI libraries Usually not thread-safe Mostly obsolete now e.g. Intersolv Oracle Driver, WebLogic drivers
![Page 29: JDBC and Database Programming in Java. Introduction u Database Access in Java u Find out any relevant background and interest of the audience u SQL gurus?](https://reader030.fdocuments.net/reader030/viewer/2022032605/56649e855503460f94b884e2/html5/thumbnails/29.jpg)
Type III DriversType III Drivers
Calls middleware server, usually on database host
Very flexible -- allows access to multiple databases using one driver
Only need to download one driver But it’s another server application to install
and maintain e.g. Symantec DBAnywhere
![Page 30: JDBC and Database Programming in Java. Introduction u Database Access in Java u Find out any relevant background and interest of the audience u SQL gurus?](https://reader030.fdocuments.net/reader030/viewer/2022032605/56649e855503460f94b884e2/html5/thumbnails/30.jpg)
Type IV DriversType IV Drivers
100% Pure Java -- the Holy Grail Use Java networking libraries to talk
directly to database engines Only disadvantage: need to download a new
driver for each database engine e.g. Oracle, mSQL
![Page 31: JDBC and Database Programming in Java. Introduction u Database Access in Java u Find out any relevant background and interest of the audience u SQL gurus?](https://reader030.fdocuments.net/reader030/viewer/2022032605/56649e855503460f94b884e2/html5/thumbnails/31.jpg)
JDBC LimitationsJDBC Limitations
No scrolling cursors No bookmarks
![Page 32: JDBC and Database Programming in Java. Introduction u Database Access in Java u Find out any relevant background and interest of the audience u SQL gurus?](https://reader030.fdocuments.net/reader030/viewer/2022032605/56649e855503460f94b884e2/html5/thumbnails/32.jpg)
Related TechnologiesRelated Technologies
ODBC Requires configuration (odbc.ini)
RDO, ADO Requires Win32
OODB e.g. ObjectStore from ODI
JavaBlend maps objects to tables transparently (more or less)
![Page 33: JDBC and Database Programming in Java. Introduction u Database Access in Java u Find out any relevant background and interest of the audience u SQL gurus?](https://reader030.fdocuments.net/reader030/viewer/2022032605/56649e855503460f94b884e2/html5/thumbnails/33.jpg)
Part III: JDBC APIsPart III: JDBC APIs
![Page 34: JDBC and Database Programming in Java. Introduction u Database Access in Java u Find out any relevant background and interest of the audience u SQL gurus?](https://reader030.fdocuments.net/reader030/viewer/2022032605/56649e855503460f94b884e2/html5/thumbnails/34.jpg)
java.sqljava.sql
JDBC is implemented via classes in the java.sql package
![Page 35: JDBC and Database Programming in Java. Introduction u Database Access in Java u Find out any relevant background and interest of the audience u SQL gurus?](https://reader030.fdocuments.net/reader030/viewer/2022032605/56649e855503460f94b884e2/html5/thumbnails/35.jpg)
Loading a Driver DirectlyLoading a Driver Directly
Driver d = new foo.bar.MyDriver();
Connection c = d.connect(...); Not recommended, use DriverManager
instead Useful if you know you want a particular
driver
![Page 36: JDBC and Database Programming in Java. Introduction u Database Access in Java u Find out any relevant background and interest of the audience u SQL gurus?](https://reader030.fdocuments.net/reader030/viewer/2022032605/56649e855503460f94b884e2/html5/thumbnails/36.jpg)
DriverManagerDriverManager
DriverManager tries all the drivers Uses the first one that works When a driver class is first loaded, it
registers itself with the DriverManager Therefore, to register a driver, just load it!
![Page 37: JDBC and Database Programming in Java. Introduction u Database Access in Java u Find out any relevant background and interest of the audience u SQL gurus?](https://reader030.fdocuments.net/reader030/viewer/2022032605/56649e855503460f94b884e2/html5/thumbnails/37.jpg)
Registering a DriverRegistering a Driver
statically load driverClass.forName(“foo.bar.MyDriver”);
Connection c = DriverManager.getConnection(...);
or use the jdbc.drivers system property
![Page 38: JDBC and Database Programming in Java. Introduction u Database Access in Java u Find out any relevant background and interest of the audience u SQL gurus?](https://reader030.fdocuments.net/reader030/viewer/2022032605/56649e855503460f94b884e2/html5/thumbnails/38.jpg)
JDBC Object ClassesJDBC Object Classes
DriverManager Loads, chooses drivers
Driver connects to actual database
Connection a series of SQL statements to and from the DB
Statement a single SQL statement
ResultSet the records returned from a Statement
![Page 39: JDBC and Database Programming in Java. Introduction u Database Access in Java u Find out any relevant background and interest of the audience u SQL gurus?](https://reader030.fdocuments.net/reader030/viewer/2022032605/56649e855503460f94b884e2/html5/thumbnails/39.jpg)
JDBC Class UsageJDBC Class Usage
DriverManager
Driver
Connection
Statement
ResultSet
![Page 40: JDBC and Database Programming in Java. Introduction u Database Access in Java u Find out any relevant background and interest of the audience u SQL gurus?](https://reader030.fdocuments.net/reader030/viewer/2022032605/56649e855503460f94b884e2/html5/thumbnails/40.jpg)
JDBC URLsJDBC URLs
jdbc:subprotocol:source each driver has its own subprotocol each subprotocol has its own syntax for the
sourcejdbc:odbc:DataSource
e.g. jdbc:odbc:Northwind
jdbc:msql://host[:port]/database e.g. jdbc:msql://foo.nowhere.com:4333/accounting
![Page 41: JDBC and Database Programming in Java. Introduction u Database Access in Java u Find out any relevant background and interest of the audience u SQL gurus?](https://reader030.fdocuments.net/reader030/viewer/2022032605/56649e855503460f94b884e2/html5/thumbnails/41.jpg)
DriverManagerDriverManager
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
![Page 42: JDBC and Database Programming in Java. Introduction u Database Access in Java u Find out any relevant background and interest of the audience u SQL gurus?](https://reader030.fdocuments.net/reader030/viewer/2022032605/56649e855503460f94b884e2/html5/thumbnails/42.jpg)
ConnectionConnection A Connection represents a session with a specific database. Within the context of a Connection, SQL statements are
executed and results are returned. Can have multiple connections to a database
NB: Some drivers don’t support serialized connections Fortunately, most do (now)
Also provides “metadata” -- information about the database, tables, and fields
Also methods to deal with transactions
![Page 43: JDBC and Database Programming in Java. Introduction u Database Access in Java u Find out any relevant background and interest of the audience u SQL gurus?](https://reader030.fdocuments.net/reader030/viewer/2022032605/56649e855503460f94b884e2/html5/thumbnails/43.jpg)
Obtaining a ConnectionObtaining a Connection
String url = "jdbc:odbc:Northwind";
try {
Class.forName ("sun.jdbc.odbc.JdbcOdbcDriver");
Connection con = DriverManager.getConnection(url);
}
catch (ClassNotFoundException e)
{ e.printStackTrace(); }
catch (SQLException e)
{ e.printStackTrace(); }
![Page 44: JDBC and Database Programming in Java. Introduction u Database Access in Java u Find out any relevant background and interest of the audience u SQL gurus?](https://reader030.fdocuments.net/reader030/viewer/2022032605/56649e855503460f94b884e2/html5/thumbnails/44.jpg)
Connection MethodsConnection Methods
Statement createStatement() returns a new Statement object
PreparedStatement prepareStatement(String sql) returns a new PreparedStatement object
CallableStatement prepareCall(String sql) returns a new CallableStatement object
Why all these different kinds of statements? Optimization.
![Page 45: JDBC and Database Programming in Java. Introduction u Database Access in Java u Find out any relevant background and interest of the audience u SQL gurus?](https://reader030.fdocuments.net/reader030/viewer/2022032605/56649e855503460f94b884e2/html5/thumbnails/45.jpg)
StatementStatement
A Statement object is used for executing a static SQL statement and obtaining the results produced by it.
![Page 46: JDBC and Database Programming in Java. Introduction u Database Access in Java u Find out any relevant background and interest of the audience u SQL gurus?](https://reader030.fdocuments.net/reader030/viewer/2022032605/56649e855503460f94b884e2/html5/thumbnails/46.jpg)
Statement MethodsStatement MethodsResultSet executeQuery(String)
Execute a SQL statement that returns a single ResultSet.
int executeUpdate(String) Execute a SQL INSERT, UPDATE or DELETE statement.
Returns the number of rows changed.
boolean execute(String) Execute a SQL statement that may return multiple results.
Why all these different kinds of queries? Optimization.
![Page 47: JDBC and Database Programming in Java. Introduction u Database Access in Java u Find out any relevant background and interest of the audience u SQL gurus?](https://reader030.fdocuments.net/reader030/viewer/2022032605/56649e855503460f94b884e2/html5/thumbnails/47.jpg)
ResultSetResultSet 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
![Page 48: JDBC and Database Programming in Java. Introduction u Database Access in Java u Find out any relevant background and interest of the audience u SQL gurus?](https://reader030.fdocuments.net/reader030/viewer/2022032605/56649e855503460f94b884e2/html5/thumbnails/48.jpg)
ResultSet MethodsResultSet Methods 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 allows you to re-use the Statement that created it automatically called by most Statement methods
![Page 49: JDBC and Database Programming in Java. Introduction u Database Access in Java u Find out any relevant background and interest of the audience u SQL gurus?](https://reader030.fdocuments.net/reader030/viewer/2022032605/56649e855503460f94b884e2/html5/thumbnails/49.jpg)
ResultSet MethodsResultSet Methods Type getType(int columnIndex)
returns the given field as the given type fields indexed starting at 1 (not 0)
Type getType(String columnName) same, but uses name of field less efficient
int findColumn(String columnName) looks up column index given column name
![Page 50: JDBC and Database Programming in Java. Introduction u Database Access in Java u Find out any relevant background and interest of the audience u SQL gurus?](https://reader030.fdocuments.net/reader030/viewer/2022032605/56649e855503460f94b884e2/html5/thumbnails/50.jpg)
ResultSet MethodsResultSet Methods String getString(int columnIndex) boolean getBoolean(int columnIndex) byte getByte(int columnIndex) short getShort(int columnIndex) int getInt(int columnIndex) long getLong(int columnIndex) float getFloat(int columnIndex) double getDouble(int columnIndex) Date getDate(int columnIndex) Time getTime(int columnIndex) Timestamp getTimestamp(int columnIndex)
![Page 51: JDBC and Database Programming in Java. Introduction u Database Access in Java u Find out any relevant background and interest of the audience u SQL gurus?](https://reader030.fdocuments.net/reader030/viewer/2022032605/56649e855503460f94b884e2/html5/thumbnails/51.jpg)
ResultSet MethodsResultSet Methods String getString(String columnName) boolean getBoolean(String columnName) byte getByte(String columnName) short getShort(String columnName) int getInt(String columnName) long getLong(String columnName) float getFloat(String columnName) double getDouble(String columnName) Date getDate(String columnName) Time getTime(String columnName) Timestamp getTimestamp(String columnName)
![Page 52: JDBC and Database Programming in Java. Introduction u Database Access in Java u Find out any relevant background and interest of the audience u SQL gurus?](https://reader030.fdocuments.net/reader030/viewer/2022032605/56649e855503460f94b884e2/html5/thumbnails/52.jpg)
isNullisNull
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)
![Page 53: JDBC and Database Programming in Java. Introduction u Database Access in Java u Find out any relevant background and interest of the audience u SQL gurus?](https://reader030.fdocuments.net/reader030/viewer/2022032605/56649e855503460f94b884e2/html5/thumbnails/53.jpg)
Sample DatabaseSample Database
Employee ID Last Name First Name
1 Davolio Nancy
2 Fuller Andrew
3 Leverling Janet
4 Peacock Margaret
5 Buchanan Steven
![Page 54: JDBC and Database Programming in Java. Introduction u Database Access in Java u Find out any relevant background and interest of the audience u SQL gurus?](https://reader030.fdocuments.net/reader030/viewer/2022032605/56649e855503460f94b884e2/html5/thumbnails/54.jpg)
SELECT ExampleSELECT Example
Connection con = DriverManager.getConnection(url, "alex", "8675309");
Statement st = con.createStatement();
ResultSet results = st.executeQuery("SELECT EmployeeID, LastName, FirstName FROM Employees");
![Page 55: JDBC and Database Programming in Java. Introduction u Database Access in Java u Find out any relevant background and interest of the audience u SQL gurus?](https://reader030.fdocuments.net/reader030/viewer/2022032605/56649e855503460f94b884e2/html5/thumbnails/55.jpg)
SELECT Example (Cont.)SELECT Example (Cont.)
while (results.next()) {
int id = results.getInt(1);
String last = results.getString(2);
String first = results.getString(3);
System.out.println("" + id + ": " + first + " " + last);
}
st.close();
con.close();
![Page 56: JDBC and Database Programming in Java. Introduction u Database Access in Java u Find out any relevant background and interest of the audience u SQL gurus?](https://reader030.fdocuments.net/reader030/viewer/2022032605/56649e855503460f94b884e2/html5/thumbnails/56.jpg)
Mapping Java Types to SQL Mapping Java Types to SQL TypesTypes
SQL type Java TypeCHAR, VARCHAR, LONGVARCHAR StringNUMERIC, DECIMAL java.math.BigDecimalBIT booleanTINYINT byteSMALLINT shortINTEGER intBIGINT longREAL floatFLOAT, DOUBLE doubleBINARY, VARBINARY, LONGVARBINARY byte[]DATE java.sql.DateTIME java.sql.TimeTIMESTAMP java.sql.Timestamp
![Page 57: JDBC and Database Programming in Java. Introduction u Database Access in Java u Find out any relevant background and interest of the audience u SQL gurus?](https://reader030.fdocuments.net/reader030/viewer/2022032605/56649e855503460f94b884e2/html5/thumbnails/57.jpg)
Database TimeDatabase Time
Times in SQL are notoriously unstandard 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
![Page 58: JDBC and Database Programming in Java. Introduction u Database Access in Java u Find out any relevant background and interest of the audience u SQL gurus?](https://reader030.fdocuments.net/reader030/viewer/2022032605/56649e855503460f94b884e2/html5/thumbnails/58.jpg)
Modifying the DatabaseModifying the Database
use executeUpdate if the SQL contains “INSERT” or “UPDATE”
Why isn’t it smart enough to parse the SQL? Optimization.
executeUpdate returns the number of rows modified
executeUpdate also used for “CREATE TABLE” etc. (DDL)
![Page 59: JDBC and Database Programming in Java. Introduction u Database Access in Java u Find out any relevant background and interest of the audience u SQL gurus?](https://reader030.fdocuments.net/reader030/viewer/2022032605/56649e855503460f94b884e2/html5/thumbnails/59.jpg)
INSERT exampleINSERT example
![Page 60: JDBC and Database Programming in Java. Introduction u Database Access in Java u Find out any relevant background and interest of the audience u SQL gurus?](https://reader030.fdocuments.net/reader030/viewer/2022032605/56649e855503460f94b884e2/html5/thumbnails/60.jpg)
Transaction ManagementTransaction Management
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
![Page 61: JDBC and Database Programming in Java. Introduction u Database Access in Java u Find out any relevant background and interest of the audience u SQL gurus?](https://reader030.fdocuments.net/reader030/viewer/2022032605/56649e855503460f94b884e2/html5/thumbnails/61.jpg)
setAutoCommitsetAutoCommit
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()
![Page 62: JDBC and Database Programming in Java. Introduction u Database Access in Java u Find out any relevant background and interest of the audience u SQL gurus?](https://reader030.fdocuments.net/reader030/viewer/2022032605/56649e855503460f94b884e2/html5/thumbnails/62.jpg)
Connection ManagersConnection Managers
Hint: 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
![Page 63: JDBC and Database Programming in Java. Introduction u Database Access in Java u Find out any relevant background and interest of the audience u SQL gurus?](https://reader030.fdocuments.net/reader030/viewer/2022032605/56649e855503460f94b884e2/html5/thumbnails/63.jpg)
Optimized StatementsOptimized Statements
Prepared Statements SQL calls 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 accesed with Connection.prepareCall()
![Page 64: JDBC and Database Programming in Java. Introduction u Database Access in Java u Find out any relevant background and interest of the audience u SQL gurus?](https://reader030.fdocuments.net/reader030/viewer/2022032605/56649e855503460f94b884e2/html5/thumbnails/64.jpg)
JDBC Class DiagramJDBC Class Diagram
Whoa!
![Page 65: JDBC and Database Programming in Java. Introduction u Database Access in Java u Find out any relevant background and interest of the audience u SQL gurus?](https://reader030.fdocuments.net/reader030/viewer/2022032605/56649e855503460f94b884e2/html5/thumbnails/65.jpg)
MetadataMetadata
Connection: DatabaseMetaData getMetaData()
ResultSet: ResultSetMetaData getMetaData()
![Page 66: JDBC and Database Programming in Java. Introduction u Database Access in Java u Find out any relevant background and interest of the audience u SQL gurus?](https://reader030.fdocuments.net/reader030/viewer/2022032605/56649e855503460f94b884e2/html5/thumbnails/66.jpg)
ResultSetMetaDataResultSetMetaData 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? Is the column a cash value? Will a write on the column definitely succeed? Can you put a NULL in this column? Is a column definitely not writable? Can the column be used in a where clause? Is the column a signed number? Is it possible for a write on the column to succeed? and so on...
![Page 67: JDBC and Database Programming in Java. Introduction u Database Access in Java u Find out any relevant background and interest of the audience u SQL gurus?](https://reader030.fdocuments.net/reader030/viewer/2022032605/56649e855503460f94b884e2/html5/thumbnails/67.jpg)
DatabaseMetaDataDatabaseMetaData
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, are
they restricted to be different from the names of the tables?
and so on…
![Page 68: JDBC and Database Programming in Java. Introduction u Database Access in Java u Find out any relevant background and interest of the audience u SQL gurus?](https://reader030.fdocuments.net/reader030/viewer/2022032605/56649e855503460f94b884e2/html5/thumbnails/68.jpg)
JavaBlend: Java to Relational JavaBlend: Java to Relational MappingMapping
![Page 69: JDBC and Database Programming in Java. Introduction u Database Access in Java u Find out any relevant background and interest of the audience u SQL gurus?](https://reader030.fdocuments.net/reader030/viewer/2022032605/56649e855503460f94b884e2/html5/thumbnails/69.jpg)
JDBC 2.0JDBC 2.0
Scrollable result set Batch updates Advanced data types
Blobs, objects, structured types
Rowsets Persistent JavaBeans
JNDI Connection Pooling Distributed transactions via JTS
![Page 70: JDBC and Database Programming in Java. Introduction u Database Access in Java u Find out any relevant background and interest of the audience u SQL gurus?](https://reader030.fdocuments.net/reader030/viewer/2022032605/56649e855503460f94b884e2/html5/thumbnails/70.jpg)
Where to get more Where to get more informationinformation
Other training sessions Reese, Database Programming with JDBC
and Java (O’Reilly) http://java.sun.com/products/jdbc/ http://java.sun.com/products/java-blend/ http://www.purpletech.com/java/