Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

Chapter 9

Download as ppt, pdf, or txt
Download as ppt, pdf, or txt
You are on page 1of 24

Chapter 9

Introduction to SQL
Programming Techniques

Copyright © 2004 Pearson Education, Inc.


Database Programming

 Objective: to access a database from an


application program (as opposed to
interactive interfaces)
 Why? An interactive interface is
convenient but not sufficient; a majority
of database operations are made
through application programs

Elmasri/Navathe, Fundamentals of Database Systems, Fourth Edition Chapter 9-2


Copyright © 2004 Ramez Elmasri and Shamkant Navathe
Database Programming
Approaches
 Embedded commands: database
commands are embedded in a general-
purpose programming language
 Library of database functions: available
to the host language for database calls;
known as an API
 A brand new, full-fledged language
(minimizes impedance mismatch)

Elmasri/Navathe, Fundamentals of Database Systems, Fourth Edition Chapter 9-3


Copyright © 2004 Ramez Elmasri and Shamkant Navathe
Impedance Mismatch

 Incompatibilities between a host


programming language and the database
model, e.g.,
– type mismatch and incompatibilities;
requires a new binding for each language
– set vs. record-at-a-time processing
need special iterators to loop over query results
and manipulate individual values

Elmasri/Navathe, Fundamentals of Database Systems, Fourth Edition Chapter 9-4


Copyright © 2004 Ramez Elmasri and Shamkant Navathe
Steps in Database Programming

1. Client program opens a connection to


the database server
2. Client program submits queries to
and/or updates the database
3. When database access is no longer
needed, client program terminates the
connection

Elmasri/Navathe, Fundamentals of Database Systems, Fourth Edition Chapter 9-5


Copyright © 2004 Ramez Elmasri and Shamkant Navathe
Embedded SQL
 Most SQL statements can be embedded
in a general-purpose host programming
language such as COBOL, C, Java
 An embedded SQL statement is
distinguished from the host language
statements by EXEC SQL and a
matching END-EXEC (or semicolon)
– shared variables (used in both languages)
usually prefixed with a colon (:) in SQL

Elmasri/Navathe, Fundamentals of Database Systems, Fourth Edition Chapter 9-6


Copyright © 2004 Ramez Elmasri and Shamkant Navathe
Example: Variable Declaration
in Language C
 Variables inside DECLARE are shared and can appear
(while prefixed by a colon) in SQL statements
 SQLCODE is used to communicate errors/exceptions
between the database and the program
int loop;
EXEC SQL BEGIN DECLARE SECTION;
varchar dname[16], fname[16], …;
char ssn[10], bdate[11], …;
int dno, dnumber, SQLCODE, …;
EXEC SQL END DECLARE SECTION;

Elmasri/Navathe, Fundamentals of Database Systems, Fourth Edition Chapter 9-7


Copyright © 2004 Ramez Elmasri and Shamkant Navathe
Embedded SQL in C
Programming Examples
loop = 1;
while (loop) {
prompt (“Enter SSN: “, ssn);
EXEC SQL
select FNAME, LNAME, ADDRESS, SALARY
into :fname, :lname, :address, :salary
from EMPLOYEE where SSN == :ssn;
if (SQLCODE == 0) printf(fname, …);
else printf(“SSN does not exist: “, ssn);
prompt(“More SSN? (1=yes, 0=no): “, loop);
END-EXEC
}

Elmasri/Navathe, Fundamentals of Database Systems, Fourth Edition Chapter 9-8


Copyright © 2004 Ramez Elmasri and Shamkant Navathe
Embedded SQL in C
Programming Examples
 A cursor (iterator) is needed to process
multiple tuples
 FETCH commands move the cursor to
the next tuple
 CLOSE CURSOR indicates that the
processing of query results has been
completed

Elmasri/Navathe, Fundamentals of Database Systems, Fourth Edition Chapter 9-9


Copyright © 2004 Ramez Elmasri and Shamkant Navathe
Dynamic SQL
 Objective: executing new (not previously
compiled) SQL statements at run-time
– a program accepts SQL statements from the
keyboard at run-time
– a point-and-click operation translates to certain SQL
query
 Dynamic update is relatively simple; dynamic
query can be complex
– because the type and number of retrieved attributes
are unknown at compile time

Elmasri/Navathe, Fundamentals of Database Systems, Fourth Edition Chapter 9-10


Copyright © 2004 Ramez Elmasri and Shamkant Navathe
Dynamic SQL: An Example

EXEC SQL BEGIN DECLARE SECTION;


varchar sqlupdatestring[256];
EXEC SQL END DECLARE SECTION;

prompt (“Enter update command:“, sqlupdatestring);
EXEC SQL PREPARE sqlcommand FROM :sqlupdatestring;
EXEC SQL EXECUTE sqlcommand;

Elmasri/Navathe, Fundamentals of Database Systems, Fourth Edition Chapter 9-11


Copyright © 2004 Ramez Elmasri and Shamkant Navathe
Embedded SQL in Java

 SQLJ: a standard for embedding SQL in


Java
 An SQLJ translator converts SQL
statements into Java (to be executed
through the JDBC interface)
 Certain classes, e.g., java.sql have to
be imported

Elmasri/Navathe, Fundamentals of Database Systems, Fourth Edition Chapter 9-12


Copyright © 2004 Ramez Elmasri and Shamkant Navathe
Embedded SQL in Java:
An Example
ssn = readEntry(“Enter a SSN: “);
try {
#sql{select FNAME, LNAME, ADDRESS, SALARY
into :fname, :lname, :address, :salary
from EMPLOYEE where SSN = :ssn};
}
catch (SQLException se) {
System.out.println(“SSN does not exist: “+ssn);
return;
}
System.out.println(fname+“ “+lname+… );

Elmasri/Navathe, Fundamentals of Database Systems, Fourth Edition Chapter 9-13


Copyright © 2004 Ramez Elmasri and Shamkant Navathe
Multiple Tuples in SQLJ

 SQLJ supports two types of iterators:


– named iterator: associated with a query
result
– positional iterator: lists only attribute types in
a query result
 A FETCH operation retrieves the next tuple
in a query result:
fetch iterator-variable into program-variable

Elmasri/Navathe, Fundamentals of Database Systems, Fourth Edition Chapter 9-14


Copyright © 2004 Ramez Elmasri and Shamkant Navathe
FIGURE 9.10. SQLJ to print employee info
for a department.

Elmasri/Navathe, Fundamentals of Database Systems, Fourth Edition Chapter 9-15


Copyright © 2004 Ramez Elmasri and Shamkant Navathe
Database Programming with
Functional Calls
 Embedded SQL provides static database
programming
 API: dynamic database programming
with a library of functions
– advantage: no preprocessor needed (thus
more flexible)
– drawback: SQL syntax checks to be done at
run-time

Elmasri/Navathe, Fundamentals of Database Systems, Fourth Edition Chapter 9-16


Copyright © 2004 Ramez Elmasri and Shamkant Navathe
Java Database Connectivity

 JDBC: SQL connection function calls for


Java programming
 A Java program with JDBC functions can
access any relational DBMS that has a
JDBC driver
 JDBC allows a program to connect to
several databases (known as data
sources)

Elmasri/Navathe, Fundamentals of Database Systems, Fourth Edition Chapter 9-17


Copyright © 2004 Ramez Elmasri and Shamkant Navathe
Steps in JDBC Database Access

1. Import JDBC library (java.sql.*)


2. Load JDBC driver:
Class.forname(“oracle.jdbc.driver.OracleDriver”)

3. Define appropriate variables


4. Create a connect object (via getConnection)
5. Create a statement object from the
Statement class

Elmasri/Navathe, Fundamentals of Database Systems, Fourth Edition Chapter 9-18


Copyright © 2004 Ramez Elmasri and Shamkant Navathe
Steps in JDBC Database Access
(continued)
6. Identify statement parameters (to be
designated by question marks)
7. Bound parameters to program variables
8. Execute SQL statement (referenced by an
object) via JDBC’s executeQuery
9. Process query results (returned in an object
of type ResultSet)
– ResultSet is a 2-dimentional table

Elmasri/Navathe, Fundamentals of Database Systems, Fourth Edition Chapter 9-19


Copyright © 2004 Ramez Elmasri and Shamkant Navathe
FIGURE 9.14. JDBC to Print Employee
Names and Salaries

Elmasri/Navathe, Fundamentals of Database Systems, Fourth Edition Chapter 9-20


Copyright © 2004 Ramez Elmasri and Shamkant Navathe
Database Stored Procedures
 Persistent procedures/functions (modules) are
stored locally and executed by the database
server (as opposed to execution by clients)
 Advantages:
– if the procedure is needed by many applications, it
can be invoked by any of them (thus reduce
duplications)
– execution by the server reduces communication
costs
– enhance the modeling power of views

Elmasri/Navathe, Fundamentals of Database Systems, Fourth Edition Chapter 9-21


Copyright © 2004 Ramez Elmasri and Shamkant Navathe
Stored Procedure Constructs
 A stored procedure
CREATE PROCEDURE procedure-name (params)
local-declarations
procedure-body;
 A stored function
CREATE FUNCTION fun-name (params) RETURNS return-type
local-declarations
function-body;
 Calling a procedure or function
CALL procedure-name/fun-name (arguments);

Elmasri/Navathe, Fundamentals of Database Systems, Fourth Edition Chapter 9-22


Copyright © 2004 Ramez Elmasri and Shamkant Navathe
SQL Persistent Stored Modules

 SQL/PSM: part of the SQL standard for


writing persistent stored modules
 SQL + stored procedures/functions +
additional programming constructs
– e.g., branching and looping statements
– enhance the power of SQL

Elmasri/Navathe, Fundamentals of Database Systems, Fourth Edition Chapter 9-23


Copyright © 2004 Ramez Elmasri and Shamkant Navathe
SQL/PSM: An Example
CREATE FUNCTION DEPT_SIZE (IN deptno INTEGER)
RETURNS VARCHAR[7]
DECLARE TOT_EMPS INTEGER;

SELECT COUNT (*) INTO TOT_EMPS


FROM EMPLOYEE WHERE DNO = deptno;
IF TOT_EMPS > 100 THEN RETURN “HUGE”
ELSEIF TOT_EMPS > 50 THEN RETURN “LARGE”
ELSEIF TOT_EMPS > 30 THEN RETURN “MEDIUM”
ELSE RETURN “SMALL”
ENDIF;

Elmasri/Navathe, Fundamentals of Database Systems, Fourth Edition Chapter 9-24


Copyright © 2004 Ramez Elmasri and Shamkant Navathe

You might also like