Download eCommerce&Security - DCU School of Computing

Survey
yes no Was this document useful for you?
   Thank you for your participation!

* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project

Document related concepts

IMDb wikipedia , lookup

Serializability wikipedia , lookup

Entity–attribute–value model wikipedia , lookup

DBase wikipedia , lookup

Tandem Computers wikipedia , lookup

Extensible Storage Engine wikipedia , lookup

Oracle Database wikipedia , lookup

Microsoft Access wikipedia , lookup

Relational algebra wikipedia , lookup

Btrieve wikipedia , lookup

Ingres (database) wikipedia , lookup

Concurrency control wikipedia , lookup

Database wikipedia , lookup

Microsoft Jet Database Engine wikipedia , lookup

ContactPoint wikipedia , lookup

Null (SQL) wikipedia , lookup

Clusterpoint wikipedia , lookup

Database model wikipedia , lookup

Microsoft SQL Server wikipedia , lookup

Relational model wikipedia , lookup

Open Database Connectivity wikipedia , lookup

SQL wikipedia , lookup

PL/SQL wikipedia , lookup

Transcript
Section 6
Embedded SQL
1
Section Content
• 6.1 Embedded SQL
• 6.2 Java Database Connectivity
• 6.3 Web Databases
CA306 Embedded SQL
6-2
6.1 Embedded SQL
• Embedding SQL from any real database system into any
conventional programming language
+ Host languages such as PL/1, COBOL, Pascal , C use the same style
+ Java solution looks a bit different
+ Dual-mode principle: every SQL statement can be used interactively as well as
in an application program
+ All interactive SQL is embeddable, both DDL and DML, but in practice only
DML gets embedded as DDL get run once only
• Some basics:
+ embedded SQL commands start with a specific symbol or key word. Examples
are `$’ or `EXEC SQL’
+ executable SQL statements can be used whenever executable programming
language statements are allowed
+ SQL statements can include references to host variables (type compatibility is
required)
CA306 Embedded SQL
6-3
STEP 1: connect
Application
Program
STEP 2: metadata query (optional)
STEP 3: execute SQL command
1,000+
database tables
CA306 Embedded SQL
6-4
STEP 4: query result set (optional)
Application
Program
STEP 5: execute revised query (optional)
STEP 6: process result set
STEP 7: disconnect
results
CA306 Embedded SQL
1,000+
database tables
6-5
The Cursor (1)
• Example:
$ select
into
from
where
status, city
:st, :c
S
s# = ‘123’;
+ :st and :c are references to programming language variables (st and c)
+ similar programming language statements possible for SQL INSERT,
DELETE, and UPDATE statements
• Problem:
+ some DML SELECT statements return a variable amount of data
+ host languages can’t (normally) deal with sets of tuples.
• Solution:
+ a cursor, a kind of pointer to process a set of tuples
CA306 Embedded SQL
6-6
The Cursor (2)
• Active set and current row:
+ a set of tuples from a SELECT is called the active set
+ at any time we can only work with one tuple in the active set, called the
current row
• A cursor is either open or closed
+ if open it points to one row
+ when closed a cursor does not have an active set
+ sequence of commands to create and use cursors:
•
•
•
•
CA306 Embedded SQL
DECLARE
OPEN
FETCH
CLOSE
6-7
The Cursor - Operations
• DECLARE
+ names a cursor and the associated SQL SELECT statement
+ the SELECT statement may have programming language variables, thus making
it dynamic
+ values for these parameters are computed at runtime
• OPEN
+ opens a cursor: runs the SELECT with the current program variable values
+ points to 1st row after execution
• FETCH
+ advances cursor to next row
+ retrieves values from that row
+ returns an error if something is wrong
• CLOSE
+ closes the cursor and releases the active set
CA306 Embedded SQL
6-8
Cursor - Example 1
• Example:
$ declare SN cursor for
select sname
from
S
where city=“Rome” ;
$ open SN
do (* for all S-tuples accessible via SN *)
$ fetch SN into :name
end do ;
$ close SN;
CA306 Embedded SQL
6-9
Cursor - Example 2
#include <stdio.h>
#include < .. other header files .. >
char myCity[21];
char name[21];
-- stores values of DB attribute city:char(20)
-- stores values of DB attribute sname:char(20)
main() {
$ declare SN cursor for
select sname from S where city = :myCity;
if (sqlcode==error) { .. terminate program .. }
$ open SN;
$ fetch SN into :name;
while (sqlcode != error) {
fprint( .. name .. );
$ fetch SN into :name;
}
-- do something with it ...
$ close SN;
}
CA306 Embedded SQL
6-10
Other Issues
• Variables:
+ Host variables are prefixed with a colon ‘:’
+ they must be associated with programming language data types, which are
usually bigger (wider) to accommodate the possible NULL value
• SQL: char(n)
Programming language: char(n+1)
• SQL: smallint
Programming language: integer
• SQL: date, time Programming language: structure
+ exact representation of NULL depends on the implementation
+ usually operations to test or set the NULL value are available
• Final remarks:
+ possible DB-development
• interactive testing
• implementation in programming language
+ compilation improves efficiency
+ disadvantage: SQL and host language are (normally) only loosely coupled.
CA306 Embedded SQL
6-11
Transactions
• Transaction:
+ a set of operations which transform the database from one consistent state
into another.
• Problem: a transaction might fail during execution
• SQL-support for transactions:
+ ROLLBACK: undo current transaction effects
+ COMMIT: confirm transaction effects
• Error handling can be described:
$ whenever error-condition do command
CA306 Embedded SQL
6-12
Sample Transaction
BEGIN
select * from A where A.x = <val>
select * from B where A.y = <val>
update A (column p = p * 0.1)
update B (column q = q + 2)
delete all tuples in C
insert tuple(val,val,val,val) into C
COMMIT / ROLLBACK
CA306 Embedded SQL
6-13
Sections Covered
 6.1 Embedded SQL
• 6.2 Java Database Connectivity
• 6.3 Web Databases
CA306 Embedded SQL
6-14
6.2 Java Database Connectivity

Java DataBase Connectivity (JDBC) provides facilities to:
 connect to the database (Java class Connection)
 send an SQL statement to the database (Java class Statement)
 process a result (Java class ResultSet)

through the java.sql API
The difference to embedded SQL described in the previous section:
 An API is available, i.e. no special syntax necessary
 Location of the database system and form of connection is dealt with in the
program
 The main conceptual problem which resulted in the introduction of cursors in
embedded SQL for C, PL/I, Cobol etc. still exists
 The main concept to deal with the problem is the result set
 The class ResultSet offers a variety of ways to process a set of tuples - the
result of a SELECT statement
CA306 Embedded SQL
6-15
JDBC Basics

Differences:
 pre-compilation is not necessary

JDBC is Sun's solution to the inefficiency of CGI-scripts connecting
to databases.
 The Java code is DBMS transparent, which means that any code needed
to establish and maintain the connection to the database is hidden.
 JDBC drivers, called by methods of the Java classes Connection and
Statement, handle the connection management.
 JDBC drivers for particular database management systems need to be
installed, or a JDBC-ODBC bridge needs to be loaded if the connection to
the database shall be made via Microsoft's ODBC mechanism.

See Java JDBC API definition for more details.
CA306 Embedded SQL
6-16
Sections Covered
 6.1 Embedded SQL
 6.2 Java Database Connectivity
• 6.3 Web Databases
CA306 Embedded SQL
6-17
6.3 Web Databases
• A simple Web-based architecture:
+ Client/server architecture
+ Information is stored in publicly accessible files on machines called Web
servers
+ Files are encoded in HTML
+ Files are identified by URLs
• Data (files) is communicated using HTTP
• Applications: Web sites
+ online shopping (e-commerce, e-business)
+ virtual courses (e-learning)
+ public services (e-government)
CA306 Embedded SQL
6-18
Web Architectures (1)
• A three-tiered architecture:
Client (browser) – web server - backend (database)
A Common Gateway Interface (CGI) may act as the middleware
between a client and a database at the back end.

CGI software executes programs/scripts to obtain dynamic
information (instead of static file content)
CA306 Embedded SQL
6-19
Web Architectures (2)

Typical CGI languages:
 scripting: Perl, Tcl
The main disadvantage of this approach is that for each user request the Web
server starts a new process, which, in case of a database backend, then
connects to the database. At the end of the request, the connection is closed
and the process terminates.
 programs: Java (JDBC)
JDBC (and Java servlets) should provide a more efficient platform, without
the need for time-consuming additional processes and database connections.
CA306 Embedded SQL
6-20
Databases in Web Architectures

Database content can be displayed using a Web browser.

The presentation can be formulated in HTML.

Here is the table from a Supplier/Parts example:
CA306 Embedded SQL
SNO
SNAME
STATUS
CITY
S1
Smith
20
Paris
S2
Jones
10
Paris
S3
Blake
30
Rome
6-21
Representing Tables in HTML
<table align=center border=2
cellpadding=2 bgcolor=white>
<tr bgcolor=grey>
<td>SNO</td>
...
<tr>
<td>SNAME</td>
<td>S2</td>
<td>STATUS</td>
<td>Jones</td>
<td>CITY</td>
<td>10</td>
</tr>
<tr>
<td>S1</td>
<td>Paris</td>
</tr>
<tr>
<td>Smith</td>
<td>S3</td>
<td>20</td>
<td>Blake</td>
<td>Paris</td>
<td>30</td>
</tr>
...
<td>Rome</td>
</tr>
</table>
CA306 Embedded SQL
6-22
Databases and the Web - the Future
• Electronic Commerce:
 Database support is increasingly important for the emerging Electronic
Commerce technologies
 Both business-to-consumer (B2C) and business-to business (B2B) eCommerce
rely on data managed using database management systems, which can be
accessed via the Internet.
• In the future, we expect to see:
 the convergence of Web and object technologies, e.g. the Document Object
Model DOM, which allows us to see documents as objects.
 new languages more powerful than HTML, e.g. XML - the eXtensible Markup
Language - allows us to define documents in a presentation-independent way
and to exchange data independently of the system used to store the data.
• Both developments will have an effect on what kind of data is
stored in the databases and how it is stored.
CA306 Embedded SQL
6-23