12
CIS 270—App Dev II Big Java Chapter 22 Relational Databases

CIS 270—App Dev II Big Java Chapter 22 Relational Databases

Embed Size (px)

Citation preview

Page 1: CIS 270—App Dev II Big Java Chapter 22 Relational Databases

CIS 270—App Dev II

Big Java Chapter 22Relational Databases

Page 2: CIS 270—App Dev II Big Java Chapter 22 Relational Databases

22.1.1 Database Tables• A relational database (DB) stores information in

_________.• Tables contain data in rows and __________.• Columns represent data ________ such as SSN,

Name, DateOfBirth, etc.• Rows represent individual _________ such as

students (which have SSN, Name, DateOfBirth, …).• Data in relational databases are accessed using

SQL (structured query ___________).• Java can be used to send SQL commands to a DB.

tablescolumns

fields

entities

language

Page 3: CIS 270—App Dev II Big Java Chapter 22 Relational Databases

22.1.1 SQL Examples• SQL command to create a product table:

CREATE TABLE Product(

Product_Code CHAR(11),Description CHAR(40),Price DECIMAL(10, 2)

)

• Insert a _____ in a table:INSERT INTO Product

VALUES (‘257-535’, ‘Hair dryer’, 29.95)

• Remove a table from the DB:DROP TABLE Product

row

Page 4: CIS 270—App Dev II Big Java Chapter 22 Relational Databases

22.1.2 Linking Tables• A Customer class can have _________ fields that

directly relate to columns in a relational table.– Customer table: customerId, name, address, city, state, zip

• However, an Invoice class may have a Customer object as an instance field (more complicated).

• This situation would require an Invoice table:– Invoice table: invoiceId, customerId, payment

• These two tables are linked by the customerId field, which is the primary _____ of Customer and a __________ key of Invoice.

instance

keyforeign

Page 5: CIS 270—App Dev II Big Java Chapter 22 Relational Databases

22.1.3 Implementing Relationships• Each invoice has exactly one customer, which is a

_____ relationship (single-valued).• But an invoice can have many line items (____ or

multi-valued relationship):– private ArrayList<LineItem> items;

• This requires two more tables.– LineItem table: invoiceId, productId, quantity

– Product table: productId, description, price

• Tables and relationships:Customer --- Invoice --- LineItem --- Product

1:11:n

1:1 1:n 1:1

Page 6: CIS 270—App Dev II Big Java Chapter 22 Relational Databases

22.2 Queries I• Use the SELECT command to _______ a database:– SELECT city, state FROM Customer– SELECT * FROM Customer WHERE State = ‘CA’– SELECT * FROM Customer WHERE Name LIKE ‘_o%’– SELECT * FROM Product

WHERE Price < 100 AND Description <> ‘Toaster’

• Above, the _ means ‘match ____ character’ and the % means ‘match any number of characters’

• Calculations:– SELECT AVG(Price) FROM Product

query

one

Page 7: CIS 270—App Dev II Big Java Chapter 22 Relational Databases

22.2 Queries II• Joins– SELECT LineItem.invoice_number

FROM Product, LineItemWHERE Product.description = ‘Car

vacuum’AND Product.product_code =

LineItem.product_code

• Updating and Deleting Data– DELETE FROM Customer WHERE State = ‘CA’– UPDATE LineItem

SET quantity = quantity + 1WHERE invoice_number = ‘11731’

Page 8: CIS 270—App Dev II Big Java Chapter 22 Relational Databases

22.4 Create a DB and a DSN• Create a database using Access and save to a folder• Create a DSN (data ________ name) for the database– In Windows, click Start, Settings, Control Panel– Double-click Administrative Tools– Double-click Data Sources (ODBC)– Click User DSN tab– Click Add button– Select Microsoft Access Driver (*.mdb, *.accdb), click Finish– Enter a Data Source Name (your choice)– Click the Select button, navigate to the folder containing

the database, select the database, click the database file– Click OK, OK, and OK

source

Page 9: CIS 270—App Dev II Big Java Chapter 22 Relational Databases

22.4 Write the Java Program I• Create a Connection objectimport java.sql.Connection;import java.sql.Statement;import java.sql.DriverManager;import java.sql.ResultSet;

public class Test{

public static void main( String[] args ) { try { Class.forName( "sun.jdbc.odbc.JdbcOdbcDriver" );

String dataSourceName = "mdbTEST"; String dbURL = "jdbc:odbc:" + dataSourceName; Connection con = DriverManager.getConnection(

dbURL, "","" );

Page 10: CIS 270—App Dev II Big Java Chapter 22 Relational Databases

22.4 Write the Java Program II• Create an SQL Statement object and use it to

execute various SQL commands

Statement stmt = con.createStatement();

stmt.execute( “CREATE TABLE Table1 ( aColumnName integer )” );

stmt.execute( “INSERT INTO Table1 VALUES( 77 )” );

stmt.execute( “SELECT aColumnName FROM Table1” );

Page 11: CIS 270—App Dev II Big Java Chapter 22 Relational Databases

22.4 Write the Java Program III• Create a ResultSet object and use it to display

results

ResultSet rs = stmt.getResultSet();

if ( rs != null )while ( rs.next() ){

System.out.println( "Data from first column: " +

rs.getString( 1 ) ); } stmt.execute( “DROP TABLE Table1" ); stmt.close(); con.close(); } // end try

Page 12: CIS 270—App Dev II Big Java Chapter 22 Relational Databases

22.4 Write the Java Program IV• Finish up catch ( Exception err )

{ System.out.println( "ERROR: " + err );

} // end catch} // end main

} // end class

• Install the database, compile the Java program and run

• See http://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=2691&lngWId=2#SECTION_SQL for more discussion