working with databases and javapedro/lectures/lecture30_01_08.pdf · java (jdbc-odbc) and databases...

24
Working with Databases and Java Pedro Contreras Department of Computer Science Royal Holloway, University of London January 30, 2008 Working with Databases and Java January 30, 2008

Upload: others

Post on 07-Aug-2020

11 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Working with Databases and Javapedro/lectures/Lecture30_01_08.pdf · Java (JDBC-ODBC) and databases Java database technology relies on JDBC API(Java Database Connectivity) libraries

Working with Databases and Java

Pedro Contreras

Department of Computer ScienceRoyal Holloway, University of London

January 30, 2008

Working with Databases and Java January 30, 2008

Page 2: Working with Databases and Javapedro/lectures/Lecture30_01_08.pdf · Java (JDBC-ODBC) and databases Java database technology relies on JDBC API(Java Database Connectivity) libraries

Outline

Introduction to relational databases

Introduction to Structured Query Language (SQL)

Entity Relationship modelling

Working with databases and Java

References

Questions

Working with Databases and Java January 30, 2008

Page 3: Working with Databases and Javapedro/lectures/Lecture30_01_08.pdf · Java (JDBC-ODBC) and databases Java database technology relies on JDBC API(Java Database Connectivity) libraries

What is a database?

A database is an organised collection of data.

The computer program used to administrate and manage this data iscalled a database management system (DBMS), e.g. MySQL, Oracle DB,DB2, MS Access, Ingres, Sybase, etc.

Working with Databases and Java January 30, 2008

Page 4: Working with Databases and Javapedro/lectures/Lecture30_01_08.pdf · Java (JDBC-ODBC) and databases Java database technology relies on JDBC API(Java Database Connectivity) libraries

How the data is stored?

Relational databases stores data in tables, where columns are calledfields, and rows are called tuples.

Columns are defined in conjunction with their data type, e.g. char,varchar, integer, float, double, etc

Also a column can be a key to access information in a table.

Working with Databases and Java January 30, 2008

Page 5: Working with Databases and Javapedro/lectures/Lecture30_01_08.pdf · Java (JDBC-ODBC) and databases Java database technology relies on JDBC API(Java Database Connectivity) libraries

Database table example

Working with Databases and Java January 30, 2008

Page 6: Working with Databases and Javapedro/lectures/Lecture30_01_08.pdf · Java (JDBC-ODBC) and databases Java database technology relies on JDBC API(Java Database Connectivity) libraries

Structured Query Language (SQL)

This is the most popular computer language used toCreate, Modify, Delete and Retrievedata from a relational database management system

Working with Databases and Java January 30, 2008

Page 7: Working with Databases and Javapedro/lectures/Lecture30_01_08.pdf · Java (JDBC-ODBC) and databases Java database technology relies on JDBC API(Java Database Connectivity) libraries

SQL transactions

Most frequent SQL data transaction are:

Insert, used to insert rows into a table

Delete, used to delete rows in a table

Update, used to modify values in a existing table

Select, used to retrieve dataFrom, used to indicate from which tables the data will be takenWhere, used to indicate rows to be retrievalGroup by, used to combine rowsOrder by, used to indicate columns to sort result

Working with Databases and Java January 30, 2008

Page 8: Working with Databases and Javapedro/lectures/Lecture30_01_08.pdf · Java (JDBC-ODBC) and databases Java database technology relies on JDBC API(Java Database Connectivity) libraries

SQL Example

1 $ INSERT INTO authors ( ID , FirstName , LastName )2 VALUES (5 , ‘ ‘ John’’ , ‘ ‘ Sheen ’’ )3

4 $ UPDATE authors SET FirstName = ‘ ‘ Martin ’’ WHERE ID = 55

6 $ DELETE FROM authors WHERE ID = 57

8 $ SELECT FirstName , LastName FROM authors

Working with Databases and Java January 30, 2008

Page 9: Working with Databases and Javapedro/lectures/Lecture30_01_08.pdf · Java (JDBC-ODBC) and databases Java database technology relies on JDBC API(Java Database Connectivity) libraries

Entity–Relationship modelling

This is a set of rules used to interpret and specify the logic behind aproblem when designing databases.

E-R model is a database Conceptual Model, which is practice hasmany variations, but in general uses representation of mainly 4constructs

An E-R model can not be implement directly on a database, but fromthis a Physical model can be derived

Working with Databases and Java January 30, 2008

Page 10: Working with Databases and Javapedro/lectures/Lecture30_01_08.pdf · Java (JDBC-ODBC) and databases Java database technology relies on JDBC API(Java Database Connectivity) libraries

E–R modelling constructs

Entity: a relevant object to be modelled, e.g. customers, products,employee

Attributes: a characteristic of an entity, e.g. attributes from acustomers could be: name, surname, and address

Identifiers: a special attribute used to identify a specific instance ofan entity, e.g.Identifier of a customer could be antextbfcustomer IDIdentifier of a employee could be the employee code

Relationship: association between two entities, e.g.A customer places a customer orderA student enrols in a courseA course is taught by a faculty member

Working with Databases and Java January 30, 2008

Page 11: Working with Databases and Javapedro/lectures/Lecture30_01_08.pdf · Java (JDBC-ODBC) and databases Java database technology relies on JDBC API(Java Database Connectivity) libraries

E–R conceptual diagram example

Places

Has items

1,1 0,n

1,1

0,n

Customer

CustomerIDNameAddressPhone

<pi> IA30A30I

<M>Order

OrderNumberOrderDateSalesPerson

<pi> IDA30

<M>

ItemS

ItemNumberDescriptionPriceQuantity

<pi> IA30II

<M>

Entity Type

Attibute

Identifier

Cardinality

Relationship

Mandatory

Working with Databases and Java January 30, 2008

Page 12: Working with Databases and Javapedro/lectures/Lecture30_01_08.pdf · Java (JDBC-ODBC) and databases Java database technology relies on JDBC API(Java Database Connectivity) libraries

E-R physical diagram example

places 0..*

has items

0..*

Customer

CustomerIDNameAddressPhone

intchar(30)char(30)int

<pk>

Order

OrderNumberCustomerIDOrderDateSalesPerson

intintdatechar(30)

<pk><fk>

ItemS

ItemNumberOrderNumberDescriptionPriceQuantity

intintchar(30)intint

<pk><fk>

Working with Databases and Java January 30, 2008

Page 13: Working with Databases and Javapedro/lectures/Lecture30_01_08.pdf · Java (JDBC-ODBC) and databases Java database technology relies on JDBC API(Java Database Connectivity) libraries

Java (JDBC-ODBC) and databases

Java database technology relies on JDBC API(Java DatabaseConnectivity) libraries

JDBC allows to connect to any database that supports ODBC (OpenDatabase Connectivity)

JDBC architecture is based on a collection of Java interfaces andclasses that enables us to connect to data sources, to create, and toexecute SQL statements

Working with Databases and Java January 30, 2008

Page 14: Working with Databases and Javapedro/lectures/Lecture30_01_08.pdf · Java (JDBC-ODBC) and databases Java database technology relies on JDBC API(Java Database Connectivity) libraries

Java and databases representation

Working with Databases and Java January 30, 2008

Page 15: Working with Databases and Javapedro/lectures/Lecture30_01_08.pdf · Java (JDBC-ODBC) and databases Java database technology relies on JDBC API(Java Database Connectivity) libraries

Java and databases in detail

Working with Databases and Java January 30, 2008

Page 16: Working with Databases and Javapedro/lectures/Lecture30_01_08.pdf · Java (JDBC-ODBC) and databases Java database technology relies on JDBC API(Java Database Connectivity) libraries

DB transactions with Java

Create Database

Create table

Insert data

Update data

Delete data

Select data

Working with Databases and Java January 30, 2008

Page 17: Working with Databases and Javapedro/lectures/Lecture30_01_08.pdf · Java (JDBC-ODBC) and databases Java database technology relies on JDBC API(Java Database Connectivity) libraries

Creating a database with Java

1 import java . sql .∗ ;23 public class CreateDatabase {4 public Create ( String url , String user , String password ) throws Exception {56 String dbname = ‘ ‘ Customer ’’ ;78 try {9 // R e g i s t e r the JDBC d r i v e r f o r MySQL .

10 Class . forName ( ‘ ‘ com . mysql . jdbc . Driver ’’ ) ;11 // Get a conne c t i on to MySQL database12 Connection con = DriverManager . getConnection ( url , user , password ) ;13 Statement stmt = con . createStatement ( ) ; // Crea te s ta tement1415 stmt . executeUpdate ( ‘ ‘ DROP DATABASE ’’ + dbname ) ; // Drop db i f e x i s t16 stmt . executeUpdate ( ‘ ‘ CREATE DATABASE ’’ + dbname ) ; // Crea te a new db1718 stmt . close ( ) ; // C lo s e s ta tement19 con . close ( ) ; // C lo s e conne c t i on20 }21 catch ( Exception e ) {22 System . out . print ( e ) ;23 }24 }25 }

Working with Databases and Java January 30, 2008

Page 18: Working with Databases and Javapedro/lectures/Lecture30_01_08.pdf · Java (JDBC-ODBC) and databases Java database technology relies on JDBC API(Java Database Connectivity) libraries

Creating tables with Java

1 import java . sql .∗ ;23 public class Create {4 public void Create ( String url , String user , String password ) throws Exception {56 try {7 // R e g i s t e r the JDBC d r i v e r f o r MySQL .8 Class . forName ( ‘ ‘ com . mysql . jdbc . Driver ’’ ) ;9 // Get a conne c t i on to MySQL database

10 Connection con = DriverManager . getConnection ( url , user , password ) ;11 Statement stmt = con . createStatement ( ) ; // Crea te s ta tement1213 // Crea te au tho r s t a b l e14 stmt . executeUpdate ( ‘ ‘ CREATE TABLE authors ( ID int NOT NULL , ’’ +15 ‘ ‘ FirstName char (30) NOT NULL , ’’ +16 ‘ ‘ LatName char (30) NOT NULL ) ’’ ) ;17 stmt . close ( ) ; // C lo s e s ta tement18 con . close ( ) ; // C lo s e conne c t i on19 }20 catch ( Exception e ) {21 System . out . print ( e ) ;22 }23 }24 }

Working with Databases and Java January 30, 2008

Page 19: Working with Databases and Javapedro/lectures/Lecture30_01_08.pdf · Java (JDBC-ODBC) and databases Java database technology relies on JDBC API(Java Database Connectivity) libraries

Inserting data with Java

1 import java . sql .∗ ;23 public class Insert {4 public void Insert ( String url , String user , String password ) throws Exception {56 try {78 // R e g i s t e r the JDBC d r i v e r f o r MySQL .9 Class . forName ( ‘ ‘ com . mysql . jdbc . Driver ’’ ) ;

10 // Get a conne c t i on to MySQL database11 Connection con = DriverManager . getConnection ( url , user , password ) ;12 Statement stmt = con . createStatement ( ) ; // Crea te s ta tement1314 // I n s e r t data i n t o a t a b l e15 stmt . executeUpdate (16 ‘ ‘ INSERT INTO authors ( ID , FirstName , LastName ) VALUES (5 , ‘ John ‘ , ‘ Sheen ‘ ) ’’ ) ;17 stmt . close ( ) ; // C lo s e s ta tement18 con . close ( ) ; // C lo s e conne c t i on19 }20 catch ( Exception e ) {21 System . out . print ( e ) ;22 }23 }24 }

Working with Databases and Java January 30, 2008

Page 20: Working with Databases and Javapedro/lectures/Lecture30_01_08.pdf · Java (JDBC-ODBC) and databases Java database technology relies on JDBC API(Java Database Connectivity) libraries

Updating data with Java

1 import java . sql .∗ ;23 public class Update {4 public void Update ( String url , String user , String password ) throws Exception {56 try {78 // R e g i s t e r the JDBC d r i v e r f o r MySQL .9 Class . forName ( ‘ ‘ com . mysql . jdbc . Driver ’’ ) ;

10 // Get a conne c t i on to MySQL database11 Connection con = DriverManager . getConnection ( url , user , password ) ;12 Statement stmt = con . createStatement ( ) ; // Crea te s ta tement1314 // Update data i n a t a b l e15 stmt . executeUpdate ( ‘ ‘ UPDATE authors SET FirstName = ‘ Martin ‘ WHERE ID = 5’’ ) ;16 stmt . close ( ) ; // C lo s e s ta tement17 con . close ( ) ; // C lo s e conne c t i on18 }1920 catch ( Exception e ) {21 System . out . print ( e ) ;22 }23 }24 }

Working with Databases and Java January 30, 2008

Page 21: Working with Databases and Javapedro/lectures/Lecture30_01_08.pdf · Java (JDBC-ODBC) and databases Java database technology relies on JDBC API(Java Database Connectivity) libraries

Delete data with Java

1 import java . sql .∗ ;23 public class Delete {4 public void Delete ( String url , String user , String password ) throws Exception {56 try {78 // R e g i s t e r the JDBC d r i v e r f o r MySQL .9 Class . forName ( ‘ ‘ com . mysql . jdbc . Driver ’’ ) ;

10 // Get a conne c t i on to MySQL database11 Connection con = DriverManager . getConnection ( url , user , password ) ;12 Statement stmt = con . createStatement ( ) ; // Crea te s ta tement1314 // De l e t e r e g i s t e r i n a t a b l e15 stmt . executeUpdate ( ‘ ‘ DELETE FROM authors WHERE ID = 5’’ ) ;16 stmt . close ( ) ; // C lo s e s ta tement17 con . close ( ) ; // C lo s e conne c t i on18 }1920 catch ( Exception e ) {21 System . out . print ( e ) ;22 }23 }24 }

Working with Databases and Java January 30, 2008

Page 22: Working with Databases and Javapedro/lectures/Lecture30_01_08.pdf · Java (JDBC-ODBC) and databases Java database technology relies on JDBC API(Java Database Connectivity) libraries

Retrieving data with Java

1 import java . sql .∗ ;23 public class Select {4 public void Select ( String url , String user , String password ) throws Exception {56 try {78 // R e g i s t e r the JDBC d r i v e r f o r MySQL .9 Class . forName ( ‘ ‘ com . mysql . jdbc . Driver ’’ ) ;

10 // Get a conne c t i on to MySQL database11 Connection con = DriverManager . getConnection ( url , user , password ) ;12 Statement stmt = con . createStatement ( ) ; // Crea te s ta tement1314 // S e l e c t Fi rstName and LastName from the t a b l e au tho r s15 ResultSet rs = stmt . executeQuery (16 ‘ ‘ SELECT FirstName , LastName FROM authors ’’ ) ; // SELECT ∗ FROM autho r s17 . . .18 // P r i n t r e s u l t s e t19 con . close ( ) ; // C lo s e conne c t i on20 }2122 catch ( Exception e ) {23 System . out . print ( e ) ;24 }25 }26 }

Working with Databases and Java January 30, 2008

Page 23: Working with Databases and Javapedro/lectures/Lecture30_01_08.pdf · Java (JDBC-ODBC) and databases Java database technology relies on JDBC API(Java Database Connectivity) libraries

Additional methods

The JDBC package also offers a series of additional methods that are veryuseful when working with databases, e.g.

Retrieving warnings

Retrieving exceptions

Create objects to store results

etc

Working with Databases and Java January 30, 2008

Page 24: Working with Databases and Javapedro/lectures/Lecture30_01_08.pdf · Java (JDBC-ODBC) and databases Java database technology relies on JDBC API(Java Database Connectivity) libraries

References

Sun Microsystems,http://java.sun.com/javase/technologies/database

Ivor Horton, Beginning Java 2 JDK 1.3.0 Edition, Wrox Press,Chapter 19.http://java.sun.com/developer/Books/javaprogramming/begjava2/ch19.pdf

George Reese, Database Programming with JDBC and Java, O’Reilly.pp 48-57

Working with Databases and Java January 30, 2008