20
10/19/2010 1 ITCS 3160 Data Base Design and Data Base Design and Implementation Jing Yang 2010 Fall Class 14: Introduction to SQL Programming Techniques (Ch13) Outline Database Programming: Techniques and Issues Issues Three approaches: Embedded SQL, Dynamic SQL, and SQLJ Database Programming with Function Calls: SQL/CLI and JDBC Dtb St dP d Database StoredProcedures and SQL/PSM Comparing the Three Approaches 2

ITCS 3160 Data Base Design and Implementation · Class 14: Introduction to SQL Programming Techniques (Ch13) Outline • Database Programming: Techniques and Issues • Three approaches:

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: ITCS 3160 Data Base Design and Implementation · Class 14: Introduction to SQL Programming Techniques (Ch13) Outline • Database Programming: Techniques and Issues • Three approaches:

10/19/2010

1

ITCS 3160Data Base Design andData Base Design and 

Implementation

Jing Yang2010 Fall

Class 14: Introduction to SQL Programming Techniques (Ch13)

Outline

• Database Programming: Techniques and IssuesIssues

• Three approaches: – Embedded SQL, Dynamic SQL, and SQLJ– Database Programming with Function Calls: SQL/CLI and JDBCD t b St d P d– Database Stored Proceduresand SQL/PSM

• Comparing the Three Approaches

2

Page 2: ITCS 3160 Data Base Design and Implementation · Class 14: Introduction to SQL Programming Techniques (Ch13) Outline • Database Programming: Techniques and Issues • Three approaches:

10/19/2010

2

Introduction to SQLProgramming Techniques

• Database applicationsHost language– Host language

• Java, C/C++/C#, COBOL, or some other programming language

– Data sublanguage• SQL

• SQL standards– Continually evolving– Each DBMS vendor may have some variations from standard

3

How to Access SQL databases

• Interactive interface – SQL commands typed directly into a monitorSQL commands typed directly into a monitor– Example: Start Menu\Programs\Oracle Database 10g Express Edition\go to database homepage

– Use them to help debugging your application programs

• Execute file of commands – @<filename>

A li ti d t b li ti• Application programs or database applications– Used as canned transactions by the end users access a database 

– May have Web interface

4

Page 3: ITCS 3160 Data Base Design and Implementation · Class 14: Introduction to SQL Programming Techniques (Ch13) Outline • Database Programming: Techniques and Issues • Three approaches:

10/19/2010

3

Database Application ‐ Approach 1

• Embedding database commands in a general‐i lpurpose programming language

– Database statements identified by a special prefix

– Precompiler or preprocessor scans the source program code 

• Identify database statements and extract them for processing by the DBMS

– Called embedded SQL

5

Approaches to Database Programming (cont’d.)

• Using a library of database functionsLib f f ti il bl t th h t– Library of functions available to the host programming language 

– Application programming interface (API)

• Designing a brand‐new language– Database programming language designed from scratchscratch 

– Example: Oracle’ PL/SQL

• First two approaches are more common

6

Page 4: ITCS 3160 Data Base Design and Implementation · Class 14: Introduction to SQL Programming Techniques (Ch13) Outline • Database Programming: Techniques and Issues • Three approaches:

10/19/2010

4

Impedance Mismatch

• Differences between database model and programming language modelprogramming language model– Database model: columns and their data types– Database model: rows

• Binding for each host programming language – Specifies for each attribute type the compatible 

i l tprogramming language types

• Cursor or iterator variable– Loop over the tuples in a query result

7

Typical Sequence of Interaction in Database Programming

• Open a connection to database server

• Interact with database by submitting queries, updates, and other database commands

• Terminate or close connection to database

8

Page 5: ITCS 3160 Data Base Design and Implementation · Class 14: Introduction to SQL Programming Techniques (Ch13) Outline • Database Programming: Techniques and Issues • Three approaches:

10/19/2010

5

Embedded SQL and SQLJ

• Embedded SQL– Used with C language

• SQLJ– Used with Java language

• Programming language called host language

9

Embedded SQL Example

10

Page 6: ITCS 3160 Data Base Design and Implementation · Class 14: Introduction to SQL Programming Techniques (Ch13) Outline • Database Programming: Techniques and Issues • Three approaches:

10/19/2010

6

Prefix

• EXEC SQLPrefix– Prefix

– Preprocessor separates embedded SQL statements from host language code

– Terminated by a matching END-EXEC • Or by a semicolon (;)

• Shared variables – Used in both the C program and the embedded SQL statements 

– Prefixed by a colon (:) in SQL statement

11

Connection

• Connecting to the databaseEXEC SQL CONNECT TO < >AS < tiEXEC SQL CONNECT TO <server name>AS <connection name>

EXEC SQL AUTHORIZATION <user account name and password> ;

• Change connection EXEC SQL SET CONNECTION <connection name> ;

• Terminate connectionEXEC SQL DISCONNECT <connection name> ;

12

Page 7: ITCS 3160 Data Base Design and Implementation · Class 14: Introduction to SQL Programming Techniques (Ch13) Outline • Database Programming: Techniques and Issues • Three approaches:

10/19/2010

7

Communication between DBMS and Program

• SQLCODE and SQLSTATE communication i blvariables 

– Used by DBMS to communicate exception or error conditions

• SQLCODE variable– 0 = statement executed successfullyy

– 100 = no more data available in query result

– < 0 = indicates some error has occurred

13

Communication between DBMS and Program (cont’d.)

• SQLSTATE– String of five characters

– ‘00000’ = no error or exception

– Other values indicate various errors or exceptions

– For example, ‘02000’ indicates ‘no more data’ when using SQLSTATEg

14

Page 8: ITCS 3160 Data Base Design and Implementation · Class 14: Introduction to SQL Programming Techniques (Ch13) Outline • Database Programming: Techniques and Issues • Three approaches:

10/19/2010

8

Retrieve a Single Tuple using Embedded SQL

15

Retrieving Multiple Tuples with Embedded SQL Using Cursors

• Cursor – Points to a single tuple (row) from result of query

• OPEN CURSOR command – Fetches query result and sets cursor to a position before first row in result

– Becomes current row for cursorBecomes current row for cursor 

• FETCH commands– Moves cursor to next row in result of query

16

Page 9: ITCS 3160 Data Base Design and Implementation · Class 14: Introduction to SQL Programming Techniques (Ch13) Outline • Database Programming: Techniques and Issues • Three approaches:

10/19/2010

9

17

Retrieving Multiple Tuples with Embedded SQL Using Cursors (cont’d.)

• FOR UPDATE OF• FOR UPDATE OF – List the names of any attributes that will be updated by the program

• Fetch orientation – Added using value: NEXT, PRIOR, FIRST, LAST, ABSOLUTE i, and RELATIVE i

18

Page 10: ITCS 3160 Data Base Design and Implementation · Class 14: Introduction to SQL Programming Techniques (Ch13) Outline • Database Programming: Techniques and Issues • Three approaches:

10/19/2010

10

Specifying Queries at Runtime Using Dynamic SQL

• Dynamic SQL– Execute different SQL queries or updates dynamically at runtime

• Dynamic update 

• Dynamic query

19

SQLJ Example

20

Page 11: ITCS 3160 Data Base Design and Implementation · Class 14: Introduction to SQL Programming Techniques (Ch13) Outline • Database Programming: Techniques and Issues • Three approaches:

10/19/2010

11

SQLJ: Embedding SQL Commands in Java

• Standard adopted by several vendors for b ddi SQL i Jembedding SQL in Java

• Import several class libraries

• Default context

• Uses exceptions for error handlingi i d– SQLException is used to return errors or 

exception conditions

21

Retrieving Multiple Tuples in SQLJ Using Iterators

• Iterator – Object associated with a collection (set or multiset) of records in a query result

• Named iterator – Associated with a query result by listing attribute names and types in query result

• Positional iterator – Lists only attribute types in query result

22

Page 12: ITCS 3160 Data Base Design and Implementation · Class 14: Introduction to SQL Programming Techniques (Ch13) Outline • Database Programming: Techniques and Issues • Three approaches:

10/19/2010

12

23

Retrieving Multiple Tuples in SQLJ Using Iterators (cont’d.)

24

Page 13: ITCS 3160 Data Base Design and Implementation · Class 14: Introduction to SQL Programming Techniques (Ch13) Outline • Database Programming: Techniques and Issues • Three approaches:

10/19/2010

13

Database Programming with Function Calls: SQL/CLI & JDBC

• Use of function calls– Dynamic approach for database programming

• Library of functions– Also known as application programming interface (API)

– Used to access database– Used to access database

25

JDBC: SQL Function Calls for Java Programming

26

Page 14: ITCS 3160 Data Base Design and Implementation · Class 14: Introduction to SQL Programming Techniques (Ch13) Outline • Database Programming: Techniques and Issues • Three approaches:

10/19/2010

14

Example Code 

• Contributed by Xiaotao. You can download it f th bfrom the course webpage

27

JDBC: SQL Function Calls for Java Programming (cont’d)

• JDBC– Java function librariesJava function libraries

• Single Java program can connect to several different databases– Called data sources accessed by the Java program– Driver manager class keeps track of installed drivers

• Class.forName("oracle.jdbc.driver.OracleDriver")

– Load a JDBC driver explicitlyLoad a JDBC driver explicitly– C:\YANGJING\ITCS3160>java ‐classpathC:\oraclexe\app\oracle\product\10.2.0\server\jdbc\lib\ojdbc14.jar;. SampleJDBC

28

Page 15: ITCS 3160 Data Base Design and Implementation · Class 14: Introduction to SQL Programming Techniques (Ch13) Outline • Database Programming: Techniques and Issues • Three approaches:

10/19/2010

15

2929

Useful resources

• JDBC tutorial http://java sun com/docs/books/tutorial/jdbchttp://java.sun.com/docs/books/tutorial/jdbc/index.html

30

Page 16: ITCS 3160 Data Base Design and Implementation · Class 14: Introduction to SQL Programming Techniques (Ch13) Outline • Database Programming: Techniques and Issues • Three approaches:

10/19/2010

16

Database Stored Proceduresand SQL/PSM

• Stored procedures– Program modules stored by the DBMS at the database server

– Can be functions or procedures

• SQL/PSM (SQL/Persistent Stored Modules)– Extensions to SQLExtensions to SQL 

– Include general‐purpose programming constructs in SQL

31

Database Stored Procedures and Functions

• Persistent stored modules – Stored persistently by the DBMS

• Useful:– When database program is needed by several applications

– To reduce data transfer and communication costTo reduce data transfer and communication cost between client and server in certain situations

– To enhance modeling power provided by views

32

Page 17: ITCS 3160 Data Base Design and Implementation · Class 14: Introduction to SQL Programming Techniques (Ch13) Outline • Database Programming: Techniques and Issues • Three approaches:

10/19/2010

17

Database Stored Procedures and Functions (cont’d.)

• Declaring stored procedures:CREATE PROCEDURE < d > (< t >)CREATE PROCEDURE <procedure name> (<parameters>)<local declarations><procedure body> ;

declaring a function, a return type is necessary, so the declaration form is

CREATE FUNCTION <function name> (<parameters>)( p )RETURNS <return type><local declarations><function body> ;

33

Database Stored Procedures and Functions (cont’d.)

• Each parameter has parameter type – Parameter type: one of the SQL data types– Parameter mode: IN, OUT, or INOUT

• Calling a stored procedure:CALL <procedure or function name> (<argument list>) ;( a gu e t st ) ;

34

Page 18: ITCS 3160 Data Base Design and Implementation · Class 14: Introduction to SQL Programming Techniques (Ch13) Outline • Database Programming: Techniques and Issues • Three approaches:

10/19/2010

18

SQL/PSM: Extending SQL for Specifying Persistent

Stored Modules

d l b h• Conditional branching statement:IF <condition> THEN <statement list>ELSEIF <condition> THEN <statement list>...ELSEIF <condition> THEN <statement list>

iELSE <statement list>END IF ;

35

SQL/PSM (cont’d.)

• Constructs for looping

36

Page 19: ITCS 3160 Data Base Design and Implementation · Class 14: Introduction to SQL Programming Techniques (Ch13) Outline • Database Programming: Techniques and Issues • Three approaches:

10/19/2010

19

SQL/PSM (cont’d.)

37

Comparing the Three Approaches

• Embedded SQL Approach– Query text checked for syntax errors and validated against database schema at compile time

– For complex applications where queries have to be generated at runtime

• Function call approach more suitable

38

Page 20: ITCS 3160 Data Base Design and Implementation · Class 14: Introduction to SQL Programming Techniques (Ch13) Outline • Database Programming: Techniques and Issues • Three approaches:

10/19/2010

20

Comparing the Three Approaches (cont’d.)

• Library of Function Calls Approach– More flexibility

– More complex programming

– No checking of syntax done at compile time

• Database Programming Language Approach– Does not suffer from the impedance mismatch– Does not suffer from the impedance mismatch problem

– Programmers must learn a new language

39