1 JDBC Java Database Connectivity. 2 Agenda Relational Database Model Structured Query Language JDBC...

29
1 JDBC Java Database Connectivity
  • date post

    20-Dec-2015
  • Category

    Documents

  • view

    262
  • download

    3

Transcript of 1 JDBC Java Database Connectivity. 2 Agenda Relational Database Model Structured Query Language JDBC...

Page 1: 1 JDBC Java Database Connectivity. 2 Agenda Relational Database Model Structured Query Language JDBC  API Overview  JDBC Architecture  JDBC Features.

1

JDBCJava Database Connectivity

Page 2: 1 JDBC Java Database Connectivity. 2 Agenda Relational Database Model Structured Query Language JDBC  API Overview  JDBC Architecture  JDBC Features.

2

Agenda

Relational Database Model Structured Query Language JDBC

API OverviewJDBC ArchitectureJDBC Features

Using JDBC API

Page 3: 1 JDBC Java Database Connectivity. 2 Agenda Relational Database Model Structured Query Language JDBC  API Overview  JDBC Architecture  JDBC Features.

3

Relational Database Model

Database modelsHierarchal, network, relational (most popular)Focus on relational

Relational Database ModelLogical representation of dataConsider relationships between data

Not concerned with implementation

Page 4: 1 JDBC Java Database Connectivity. 2 Agenda Relational Database Model Structured Query Language JDBC  API Overview  JDBC Architecture  JDBC Features.

4

Relational Database Model

Relational databaseComposed of tables

Rows called records Columns are fields (attributes)

First field usually primary key Unique for each record Primary key can be more than one field (column) Primary key not required

Page 5: 1 JDBC Java Database Connectivity. 2 Agenda Relational Database Model Structured Query Language JDBC  API Overview  JDBC Architecture  JDBC Features.

5

Relational Database Model

Number Name DepartmentSalary Location

2360324568

35761

34589

47132

78321

JONES, A.

KERWIN, R.

LARSON, P.

MYERS, B.

NEUMANN, C.

STEPHENS, T.

413

413

642

611

413

611

1100

2000

1800

1400

9000

8000

NEW JERSEY

NEW JERSEY

LOS ANGELES

ORLANDO

NEW JERSEY

ORLANDO

Table: Employee

A record

A columnPrimary Key

Relational Database Structure

Page 6: 1 JDBC Java Database Connectivity. 2 Agenda Relational Database Model Structured Query Language JDBC  API Overview  JDBC Architecture  JDBC Features.

6

Relational Database Overview Books.mdb database Structure:

Primary key in boldRule of Entity Integrity

Every record has unique entry in primary key field

Page 7: 1 JDBC Java Database Connectivity. 2 Agenda Relational Database Model Structured Query Language JDBC  API Overview  JDBC Architecture  JDBC Features.

7

Structured Query Language

Overview of SQL Context of Books.mdb database SQL keywords discussed in context of complete queries

Some keywords beyond scope of text Used to

Query a database Insert records into a database Update existing records in a database

SQL keywords SELECT, FROM, WHERE, GROUP BY, HAVING, ORDER BY

INSERT, UPDATE, DELETE, etc

Page 8: 1 JDBC Java Database Connectivity. 2 Agenda Relational Database Model Structured Query Language JDBC  API Overview  JDBC Architecture  JDBC Features.

8

Structured Query Language Example SQL Query:

SELECT * FROM Titles WHERE Title LIKE '*How to Program' ORDER BY Title ASC

SQL Result:

ISBN

Title

Edition Number

Year Published

Publisher ID

0-13-118043-6 C How to Program 1 1992 1

0-13-226119-7 C How to Program 2 1994 1

0-13-528910-6 C++ How to Program 2 1997 1

0-13-016143-8 Internet and World Wide Web How to Program

1 1999 1

0-13-012507-5 Java How to Program 3 1999 1

0-13-899394-7 Java How to Program 2 1997 1

0-13-456955-5 Visual Basic 6 How to Program 1 1998 1

Page 9: 1 JDBC Java Database Connectivity. 2 Agenda Relational Database Model Structured Query Language JDBC  API Overview  JDBC Architecture  JDBC Features.

9

JDBC – API Overview

JDBC API makes it possible to do three things: Establish a connection with a database or

access any tabular data source Send SQL statements Process the results

Page 10: 1 JDBC Java Database Connectivity. 2 Agenda Relational Database Model Structured Query Language JDBC  API Overview  JDBC Architecture  JDBC Features.

10

JDBC Architecture for Java Application

Type 1 Type 2

Page 11: 1 JDBC Java Database Connectivity. 2 Agenda Relational Database Model Structured Query Language JDBC  API Overview  JDBC Architecture  JDBC Features.

11

JDBC Architecture for Java Applet

Type 4 Type 3

Page 12: 1 JDBC Java Database Connectivity. 2 Agenda Relational Database Model Structured Query Language JDBC  API Overview  JDBC Architecture  JDBC Features.

12

JDBC Features

Leverage Existing Enterprise Data

Simplified Enterprise Development : Easy to use API

Zero Configuration for Network Computers

Full Access to Metadata No Installation Database Connection

Identified by URL Supported by many industry

Page 13: 1 JDBC Java Database Connectivity. 2 Agenda Relational Database Model Structured Query Language JDBC  API Overview  JDBC Architecture  JDBC Features.

13

JDBC Features

From java.sql.*: (standard) Scrollable result set: MoveNext, MovePrev Updatable result set Supported BLOB and CLOB Batch updates: performance improvement, sending multiple

updated instead of single updated to DB Savepoints: Ability to roll transactions back to where a

savepoint is set From javax.sql.* (optional):

Connection pooling Distributed transactions JNDI support

Page 14: 1 JDBC Java Database Connectivity. 2 Agenda Relational Database Model Structured Query Language JDBC  API Overview  JDBC Architecture  JDBC Features.

14

Using JDBC API

Setup Database and JDBC Driver Ex: Books.mdb using JdbcOcbd bridge

Loading Driver Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver”);

Making Connection Connection con =

DriverManager.getConnection(“jdbc:odbc:books”, “userName”, “password”);

Send/Execute Query Statement stmt = con.createStatement(); ResultSet rs = stmt.executeQuery(“SELECT * from

Authors”);

Page 15: 1 JDBC Java Database Connectivity. 2 Agenda Relational Database Model Structured Query Language JDBC  API Overview  JDBC Architecture  JDBC Features.

15

The data source must be registered with system. Go to Control Panel -> ODBC Data Source Administrator.

This allows us to register our User Data Source Name.

Go to the User DSN tab and click Add...

We are using Access, so select Microsoft Access Driver, then Finish

Setup dialog appears. Enter name used to reference database and description (optional).

Use Select... to choose database file.

Use Advanced... to create a username (anonymous) and password (guest). When done, click OK

ODBC Data Source Administrator now has Books. We can now access ODBC data source using JDBC to ODBC driver.

Setup Books.mdb Database

Page 16: 1 JDBC Java Database Connectivity. 2 Agenda Relational Database Model Structured Query Language JDBC  API Overview  JDBC Architecture  JDBC Features.

16

Statement for SELECT Query

For Forward Only and Read Only ResultSetStatement stmf = con.createStatement();

For Updateable ResultSet (JDBC 2.0)Statement stmt =

con.createStatement( ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE);

Page 17: 1 JDBC Java Database Connectivity. 2 Agenda Relational Database Model Structured Query Language JDBC  API Overview  JDBC Architecture  JDBC Features.

17

ResultSet Record Navigation

Record NavigationMoveNext next();MovePrev previous();Last Record afterLast(); isAfterLast()First Record beforeFirst(); isBeforeFirst()Go to N position absolute(n), relative(n)Record Count int recCount = rs.getRow();

Page 18: 1 JDBC Java Database Connectivity. 2 Agenda Relational Database Model Structured Query Language JDBC  API Overview  JDBC Architecture  JDBC Features.

18

First Sample

Perform query on Books.mdb databaseConnect to databaseQuery to Table “Authors”Display results

Page 19: 1 JDBC Java Database Connectivity. 2 Agenda Relational Database Model Structured Query Language JDBC  API Overview  JDBC Architecture  JDBC Features.

19

Authors tableFour fields

AuthorID - ID number FirstName LastName YearBorn

AuthorID

FirstName

LastName

YearBorn 1 Harvey Deitel 1946

2 Paul Deitel 1968

3 Tem Nieto 1969

First Sample

Page 20: 1 JDBC Java Database Connectivity. 2 Agenda Relational Database Model Structured Query Language JDBC  API Overview  JDBC Architecture  JDBC Features.

20

1 // Fig. 18.24: TableDisplay.java

2 // This program displays the contents of the Authors table

3 // in the Books database.

44 import java.sql.*;

5 import javax.swing.*;

6 import java.awt.*;

7 import java.awt.event.*;

8 import java.util.*;

9

10 public class TableDisplay extends JFrame {

11 private Connection connection;

12 private JTable table;

13

14 public TableDisplay()

15 {

16 // The URL specifying the Books database to which

17 // this program connects using JDBC to connect to a

18 // Microsoft ODBC database.

1919 String url = "jdbc:odbc:Books";

20 String username = "anonymous";

21 String password = "guest";

22

23 // Load the driver to allow connection to the database

24 try {

2525 Class.forName( "sun.jdbc.odbc.JdbcOdbcDriver" );

26

2727 connection = DriverManager.getConnection(

28 url, username, password );

Import the sql package.

Specify url, username, and password. The database has password protection (next section).

Load class definition for database driver (static method Class.forName).

Attempt to connect to database. Use static method getConnection, of class DriverManager (java.sql).

Page 21: 1 JDBC Java Database Connectivity. 2 Agenda Relational Database Model Structured Query Language JDBC  API Overview  JDBC Architecture  JDBC Features.

21

29 }

30 catch ( ClassNotFoundException cnfex ) {

31 System.err.println(

32 "Failed to load JDBC/ODBC driver." );

33 cnfex.printStackTrace();

34 System.exit( 1 ); // terminate program

35 }

36 catch ( SQLException sqlex ) {

37 System.err.println( "Unable to connect" );

38 sqlex.printStackTrace();

39 }

4041 getTable();

42

43 setSize( 450, 150 );

44 show();

45 }

46

47 private void getTable()

48 {

49 Statement statement;

50 ResultSet resultSet;

51

52 try {

53 String query = "SELECT * FROM Authors";

54

5555 statement = connection.createStatement();

5656 resultSet = statement.executeQuery( query );

Create a Statement object that will query the database.

Returns a ResultSet object containing results.

Page 22: 1 JDBC Java Database Connectivity. 2 Agenda Relational Database Model Structured Query Language JDBC  API Overview  JDBC Architecture  JDBC Features.

22

57 displayResultSet( resultSet );

5858 statement.close();

59 }

60 catch ( SQLException sqlex ) {

61 sqlex.printStackTrace();

62 }

63 }

64

65 private void displayResultSet( ResultSet rs )

66 throws SQLException

67 {

68 // position to first record

69 boolean moreRecords = rs.next();

70

71 // If there are no records, display a message

72 if ( ! moreRecords ) {

73 JOptionPane.showMessageDialog( this,

74 "ResultSet contained no records" );

75 setTitle( "No records to display" );

76 return;

77 }

78

79 setTitle( "Authors table from Books" );

80

8181 Vector columnHeads = new Vector();

82 Vector rows = new Vector();

83

84 try {

85 // get column heads

8686 ResultSetMetaData rsmd = rs.getMetaData();

statement closed when not needed.

Positions to first record in ResultSet (initially before first record).

Create new Vectors, similar to dynamic arrays.

Get meta data, which describes contents of ResultSet.

Page 23: 1 JDBC Java Database Connectivity. 2 Agenda Relational Database Model Structured Query Language JDBC  API Overview  JDBC Architecture  JDBC Features.

23

87

88 for ( int i = 1; i <= rsmd.getColumnCount(); ++i )

8989 columnHeads.addElement( rsmd.getColumnName( i ) );

90

91 // get row data

92 do {

9393 rows.addElement( getNextRow( rs, rsmd ) );

94 } while ( rs.next() );

95

96 // display table with ResultSet contents

9797 table = new JTable( rows, columnHeads );

98 JScrollPane scroller = new JScrollPane( table );

99 getContentPane().add(

100 scroller, BorderLayout.CENTER );

101 validate();

102 }

103 catch ( SQLException sqlex ) {

104 sqlex.printStackTrace();

105 }

106 }

107

108 private Vector getNextRow( ResultSet rs,

109 ResultSetMetaData rsmd )

110 throws SQLException

111 {

112112 Vector currentRow = new Vector();

113

Get names of column heads, add to Vector.

Utility method getNextRow returns a Vector with row data. Creates a Vector of Vectors (like double scripted array).

Create a JTable, takes Vector of Vectors and Vector of column heads.

Create Vector to hold one row of data.

Page 24: 1 JDBC Java Database Connectivity. 2 Agenda Relational Database Model Structured Query Language JDBC  API Overview  JDBC Architecture  JDBC Features.

24

114 for ( int i = 1; i <= rsmd.getColumnCount(); ++i )

115115 switch( rsmd.getColumnType( i ) ) {

116 case Types.VARCHAR:

117 currentRow.addElement( rs.getString( i ) );

118 break;

119 case Types.INTEGER:

120 currentRow.addElement(

121 new Long( rs.getLong( i ) ) );

122 break;

123 default:

124 System.out.println( "Type was: " +

125 rsmd.getColumnTypeName( i ) );

126 }

127

128 return currentRow;

129 }

130

131 public void shutDown()

132 {

133 try {

134 connection.close();

135 }

136 catch ( SQLException sqlex ) {

137 System.err.println( "Unable to disconnect" );

138 sqlex.printStackTrace();

139 }

140 }

141

Test for column type, add appropriate type of element to Vector.

Page 25: 1 JDBC Java Database Connectivity. 2 Agenda Relational Database Model Structured Query Language JDBC  API Overview  JDBC Architecture  JDBC Features.

25

142 public static void main( String args[] )

143 {

144 final TableDisplay app = new TableDisplay();

145

146 app.addWindowListener(

147 new WindowAdapter() {

148 public void windowClosing( WindowEvent e )

149 {

150 app.shutDown();

151 System.exit( 0 );

152 }

153 }

154 );

155 }

156}

Page 26: 1 JDBC Java Database Connectivity. 2 Agenda Relational Database Model Structured Query Language JDBC  API Overview  JDBC Architecture  JDBC Features.

26

Update Query

For INSERT, DELETE, UPDATE use: stmt.executeUpdate(“DELETE from Authors where

YearBorn=1946”); Bacth Update (JDBC 2.0):

Statement stmt = con.createStatement(); con.setAutoCommit(false); stmt.addBatch("INSERT INTO employees VALUES (1000,

'Joe Jones')");stmt.addBatch("INSERT INTO departments VALUES (260,

'Shoe')"); int [] updateCounts = stmt.executeBatch();

Page 27: 1 JDBC Java Database Connectivity. 2 Agenda Relational Database Model Structured Query Language JDBC  API Overview  JDBC Architecture  JDBC Features.

27

Using Transaction

Transaction processing Changes can be undone Interface Connection

Method setAutoCommit true - each SQL statements performed individually false - several statements grouped as a transaction

Terminating Statement that executes SQL statements Method commit - commit changes to database Method rollback - return database to previous state

Method getAutoCommit Returns auto commit state

Page 28: 1 JDBC Java Database Connectivity. 2 Agenda Relational Database Model Structured Query Language JDBC  API Overview  JDBC Architecture  JDBC Features.

28

Using Transaction

con.setAutoCommit(false);PreparedStatement updateSales = con.prepareStatement( "UPDATE COFFEES SET SALES = ? WHERE COF_NAME LIKE ?");updateSales.setInt(1, 50);updateSales.setString(2, "Colombian");updateSales.executeUpdate();PreparedStatement updateTotal = con.prepareStatement( "UPDATE COFFEES SET TOTAL = TOTAL + ? WHERE COF_NAME

LIKE ?");updateTotal.setInt(1, 50);updateTotal.setString(2, "Colombian");updateTotal.executeUpdate();con.commit();con.setAutoCommit(true);

Page 29: 1 JDBC Java Database Connectivity. 2 Agenda Relational Database Model Structured Query Language JDBC  API Overview  JDBC Architecture  JDBC Features.

29

Reference

http://java.sun.com/jdbc