Download Chapter 11 – JavaScript/Jscript: Functions

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

Concurrency control wikipedia , lookup

SQL wikipedia , lookup

Entity–attribute–value model wikipedia , lookup

Database wikipedia , lookup

Microsoft Jet Database Engine wikipedia , lookup

Microsoft SQL Server wikipedia , lookup

Open Database Connectivity wikipedia , lookup

Extensible Storage Engine wikipedia , lookup

ContactPoint wikipedia , lookup

Clusterpoint wikipedia , lookup

Relational model wikipedia , lookup

Database model wikipedia , lookup

Transcript
Chapter 25 – Database: SQL, ADO and RDS
Outline
25.1
Introduction
25.2
Relational Database Model
25.3
Relational Database Overview: Books.mdb
25.4
Structured Query Language
25.4.1
Basic SELECT Query
25.4.2
WHERE Clause
25.4.3
ORDER BY Clause
25.4.4
Using INNER JOIN to Merge Data from Multiple Tables
25.4.5
TitleAuthor Query from Books.mdb
25.4.6
Inserting a Record
25.4.7
Updating a Record
25.5
Registering Books.mdb as an ODBC Source
25.6
ActiveX Data Objects (ADO)
25.7
Remote Data Services (RDS
 2000 Deitel & Associates, Inc. All rights reserved.
25.1 Introduction
• Database
– Integrated collection of data
• Database Management System (DBMS)
– Has mechanisms for storing and organizing data
– Sophisticated queries and manipulations of data
• Relational Databases
– Most popular database system in use today
• Structured Query Language (SQL – pronounced “sequel”)
– Almost universally used with relational databases
– Makes queries (request information) and manipulate data
 2000 Deitel & Associates, Inc. All rights reserved.
25.1 Introduction (II)
• In this chapter
– Presentation of basic SQL queries using a database
– Introduction of two Microsoft technologies
• ActiveX Data Objects (ADO)
• Remote Data Services (RDS)
• These two technologies
– Enable client browser to
• Retrieve information from a database on a Web server
• Process that information on the client computer
• Return modifications of the data to the Web server so that the data can
be updated in the database
• Manipulation of data in the client
– Increases performance of Web-based database applications
– Reduces overall load on the server computer
 2000 Deitel & Associates, Inc. All rights reserved.
25.2 Relational Database Model
• Relational Database Model
– Logical representation of the data
– Consider relationships between data without worrying about
physical implementation
• Relational Database
– Composed of tables
– Any row of the table is called a record
– The first field is used as the primary key for referencing
• Records are normally unique (by primary key)
• Primary key can be composed of more than one field or column
– Each column represents a different field (or attribute)
 2000 Deitel & Associates, Inc. All rights reserved.
25.2 Relational Database Model (II)
Relational Database Structure
Table: Employee
A record
Number
Name
Department Salary
Location
23603
JONES, A.
413
1100
NEW JERSEY
24568
KERWIN, R.
413
2000
NEW JERSEY
34589
LARSON, P.
642
1800
LOS ANGELES
35761
MYERS, B.
611
1400
ORLANDO
47132
NEUMANN, C.
413
9000
NEW JERSEY
78321
STEPHENS, T.
611
8000
ORLANDO
Primary Key
 2000 Deitel & Associates, Inc. All rights reserved.
A column
25.2 Relational Database Model (III)
• Different users interested in different parts of the table
– SQL statements specify the data to select from the table
• SQL
– Provides complete set of keywords
– Smaller databases can also be combined to form larger ones
– Results of a query called result sets (or record sets)
Example: Result set to show where departments are located
Department
Location
413
NEW JERSEY
611
ORLANDO
642
LOS ANGELES
 2000 Deitel & Associates, Inc. All rights reserved.
25.3 Relational Database Overview: Books.mdb
• Overview of Database Books.mdb
– This database will be used throughout the chapter to introduce
• Various database concepts
• Use of SQL to obtain useful information from the database and to
manipulate the database
– Books.mdb consists of four tables:
• Authors, Publishers, AuthorISBN and Titles
• Primary key for each table is shown in italics
 2000 Deitel & Associates, Inc. All rights reserved.
25.3 Relational Database Overview: Books.mdb
(II)
•
Authors table description
–
AuthorID
•
–
FirstName
•
–
String representing author’s last name
YearBorn
•
•
String representing author’s first name
LastName
•
–
Integer representing author’s ID number in database (primary key)
String representing author’s year of birth
Authors table data
AuthorID FirstNa me La stNa me Yea rBorn
1
Harvey
Deitel
1946
2
Paul
Deitel
1968
3
Tem
Nieto
1969
 2000 Deitel & Associates, Inc. All rights reserved.
25.3 Relational Database Overview: Books.mdb
(III)
• Publishers table description
–
PublisherID
•
–
Integer representing publisher’s ID number in database (primary key)
PublisherName
•
String representing abbreviated name for publisher
• Publishers table data
Pub lisherID
PublisherName
1
2
Prentice Hall
Prentice Hall PTR
 2000 Deitel & Associates, Inc. All rights reserved.
25.3 Relational Database Overview: Books.mdb
(IV)
•
AuthorISBN table description
–
ISBN
•
–
String representing ISBN number for a book (linking table - no primary key)
AuthorID
•
Integer representing author’s ID number
 2000 Deitel & Associates, Inc. All rights reserved.
25.3 Relational Database Overview: Books.mdb
(V)
AuthorISBN table data
ISBN
AuthorID
0-13-010671-2
1
0-13-010671-2
2
0-13-020522-2
1
0-13-020522-2
2
0-13-082925-0
2
0-13-082927-7
1
0-13-082927-7
2
0-13-082928-5
1
0-13-082928-5
2
0-13-082928-5
3
0-13-083054-2
1
0-13-083054-2
2
0-13-083055-0
1
0-13-083055-0
2
0-13-118043-6
1
0-13-118043-6
2
0-13-226119-7
1
0-13-226119-7
2
(continued on top of next row)
ISBN
AuthorID
(continued from bottom of previous row)
0-13-271974-6
1
0-13-271974-6
2
0-13-456955-5
1
0-13-456955-5
2
0-13-456955-5
3
0-13-528910-6
1
0-13-528910-6
2
0-13-565912-4
1
0-13-226119-7
2
0-13-020522-2
3
0-13-082714-2
1
0-13-082714-2
2
0-13-082925-0
1
0-13-565912-4
2
0-13-565912-4
3
0-13-899394-7
1
0-13-899394-7
2
(continued on top of next row)
 2000 Deitel & Associates, Inc. All rights reserved.
ISBN
AuthorID
(continued from bottom of previous row)
0-13-904947-9
1
0-13-904947-9
2
0-13-904947-9
3
0-13-013249-7
1
0-13-013249-7
2
0-13-085609-6
1
0-13-085609-6
2
0-13-085609-6
3
0-13-016143-8
1
0-13-016143-8
2
0-13-016143-8
3
0-13-015870-4
1
0-13-015870-4
2
0-13-015870-4
3
0-13-012507-5
1
0-13-012507-5
2
0-13-085248-1
1
0-13-085248-1
2
25.3 Relational Database Overview: Books.mdb
(VI)
• Titles table description
–
ISBN
•
–
Title
•
–
String representing year in which book was published
Description
•
–
String representing edition of the book
YearPublished
•
–
String representing title of the book
EditionNumber
•
–
String representing ISBN number of the book (primary key)
String representing description of the book
PublisherID
•
Integer representing publisher’s ID number (corresponds to ID
number in Publishers table)
 2000 Deitel & Associates, Inc. All rights reserved.
25.3 Relational Database Overview: Books.mdb
(VII)
• Titles table data
ISBN
Title
0-13-226119-7
0-13-528910-6
0-13-899394-7
0-13-012507-5
0-13-456955-5
0-13-016143-8
0-13-013249-7
0-13-565912-4
0-13-904947-9
0-13-020522-2
0-13-015870-4
0-13-082925-0
0-13-082927-7
0-13-082928-5
0-13-085248-1
0-13-085609-6
0-13-082714-2
0-13-010671-2
0-13-083054-2
0-13-083055-0
0-13-118043-6
0-13-271974-6
C How to Program
C++ How to Program
Java How to Program
Java How to Program
Visual Basic 6 How to Program
Internet and World Wide Web How to Program
Getting Started with Visual C++ 6 with an Introduction to MFC
C++ How to Program Instructor's Manual with Solutions Disk
Java How to Program Instructor's Manual with Solution Disk
Visual Basic 6 How to Program Instructor's Manual with Solution Disk
Internet and World Wide Web How to Program Instructor's Manual with Solutions Disk
The Complete C++ Training Course
The Complete Java Training Course
The Complete Visual Basic 6 Training Course
The Complete Java Training Course
The Internet and World Wide Web How to Program Complete Training Course
C++ How to Program 2/e and Getting Started with Visual C++ 5.0 Tutorial
Java How to Program 2/e and Getting Started with Visual J++ 1.1 Tutorial
The Complete C++ Training Course 2/e and Getting Started with Visual C++ 5.0 Tutorial
The Complete Java Training Course 2/e and Getting Started with Visual J++ 1.1 Tutorial
C How to Program
Java Multimedia Cyber Classroom
 2000 Deitel & Associates, Inc. All rights reserved.
Edition
Yea r- PublisherID
Number Published
2
2
2
3
1
1
1
2
2
1
1
2
2
1
3
1
2
2
2
2
1
1
1994
1997
1997
1999
1998
1999
1999
1998
1997
1999
1999
1998
1997
1999
1999
1999
1998
1998
1998
1998
1992
1996
1
1
1
1
1
1
1
1
1
1
1
2
2
2
2
2
1
1
1
1
1
2
Table relationships in books.mdb
•
Lines between tables represent relationships
–
Example: Line between Publishers and Titles
•
•
–
•
One-to-many relationship
Every publisher can have an infinite number of books
PublisherID is the foreign key in the Titles table
•
Must correspond to primary key in Publishers table
•
Maintains Rule of Referential Integrity
AuthorISBN table–
–
No primary key
Linking table between Titles and Authors
 2000 Deitel & Associates, Inc. All rights reserved.
25.4 Structured Query Language
• Structured Query Language (SQL) keywords used to
– Query a database
– Insert records into a database
– Update existing records in a database
SQL keyword
SELECT
FROM
WHERE
ORDER BY
INSERT INTO
UPDATE
Description
Select (retrieve) fields from one or more tables.
Tables from which to get fields. Required in every SELECT.
Criteria for selection that determine the rows to be retrieved.
Criteria for ordering (sorting) of records.
Insert values into one or more tables. [Note: Some databases do
not require the SQL keyword INTO.]
Update existing data in one or more tables.
(Note: there are other keywords not included in this table)
 2000 Deitel & Associates, Inc. All rights reserved.
25.4.1 Basic SELECT Query
• SELECT * FROM TableName
– TableName specifies table in database where data is located
– * selects all rows and fields from TableName
• SELECT * FROM Authors
– Selects the entire contents of the Authors table
• SELECT AuthorID, LastName FROM Authors
– To select fields from table, replace * with comma-separated list of field
names to select
– Returns the following:
 2000 Deitel & Associates, Inc. All rights reserved.
AuthorID
LastName
1
2
3
Deitel
Deitel
Nieto
25.4.1 Basic SELECT Query (II)
• Order of fields
– Specifying field names ensures that the fields are returned in
the same order, even if in different order in the table
• Allows result set to be processed more efficiently by the application
– SQL statement using * does not ensure that fields will be
returned in the expected order
• Do not use to specify field names to select from one or several table
• Field name with spaces
– If contains spaces, must be enclosed in square brackets ([])
• Error if you forget to enclose in brackets
• Therefore, try to avoid field names with spaces
 2000 Deitel & Associates, Inc. All rights reserved.
25.4.2 WHERE Clause
• WHERE clause
– Most cases, only necessary to locate records that satisfy certain selection
criteria
– SQL uses the WHERE clause to specify the selection criteria
– Can contain operators
• <, >, <=, >=, =, <> and LIKE
• Simplest form:
SELECT fieldName1, fieldName2, … FROM TableName WHERE Criteria
• SQL is case-sensitive on some systems
– Check your database system document to determine the syntax to be used
for keywords
• All uppercase, all lowercase, combination?
 2000 Deitel & Associates, Inc. All rights reserved.
25.4.2 WHERE Clause (II)
• Example
SELECT AuthorID, FirstName, LastName, YearBorn
FROM Authors
WHERE YearBorn > 1960
• Returns
AuthorID FirstName LastName YearBorn
2
3
Paul
Tem
 2000 Deitel & Associates, Inc. All rights reserved.
Deitel
Nieto
1968
1969
25.4.2 WHERE Clause (III)
• LIKE Operator
– Used for pattern matching with wildcard characters
• asterisk (*)
• question mark (?)
– Allows SQL to search for similar strings that “match a
pattern”
– Asterisk
• Indicates any number of characters in a row at location in pattern
• Surrounded by single-quote characters
– Question Mark
• Indicates a single character at that position in the pattern
• Surrounded by single-quote characters
– Not supported by all database systems
 2000 Deitel & Associates, Inc. All rights reserved.
25.4.2 WHERE Clause (IV)
• LIKE Operator Example
SELECT AuthorID, FirstName, LastName, YearBorn
FROM Authors
WHERE Lastname LIKE ‘d*’
– Returns records of all authors whose last name’s begin with the letter d
AuthorID FirstNa me La stNa me Yea rBorn
1
2
Harvey
Paul
 2000 Deitel & Associates, Inc. All rights reserved.
Deitel
Deitel
1946
1968
25.4.2 WHERE Clause (V)
• LIKE Operator Example II
SELECT AuthorID, FirstName, LastName, YearBorn
FROM Authors
WHERE Lastname LIKE ‘?i*’
– Returns records of all authors whose last name second letter is the
letter i
AuthorID FirstName LastName YearBorn
3
Tem
 2000 Deitel & Associates, Inc. All rights reserved.
Nieto
1969
25.4.2 WHERE Clause (VI)
• LIKE Operator Example III
– Query can be specialized to allow any character in a range of
characters in one position in the string
• [startValue-endValue]
SELECT AuthorID, FirstName, LastName, YearBorn
FROM Authors
WHERE Lastname LIKE ‘?[a-i]*’
– Returns records of all authors in table because all fit range
AuthorID FirstNa me La stNa me Yea rBorn
1
2
3
Harvey
Paul
Tem
 2000 Deitel & Associates, Inc. All rights reserved.
Deitel
Deitel
Nieto
1946
1968
1969
25.4.3 ORDER BY Clause
• ORDER BY Clause
– Sorts results of query into ascending or descending order
SELECT fieldName1, fieldName2, … FROM TableName ORDER BY fieldName ASC
SELECT fieldName1, fieldName2, … FROM TableName ORDER BY fieldName DESC
• Example
SELECT AuthorID, FirstName, LastName, YearBorn
FROM Authors
ORDER BY LastName ASC
– Returns authors sorted by last name in ascending order
AuthorID FirstNa me La stNa me Yea rBorn
2
1
3
Paul
Harvey
Tem
 2000 Deitel & Associates, Inc. All rights reserved.
Deitel
Deitel
Nieto
1968
1946
1969
25.4.3 ORDER BY Clause (II)
• The WHERE and ORDER BY clauses can be combined
– Example:
SELECT ISBN, Title, EditionNumber, YearPublished,
PublisherID
FROM Titles
WHERE Title LIKE ‘*How to Program’
ORDER BY Title ASC
– Returns:
ISBN
Title
0-13-118043-6
0-13-226119-7
0-13-528910-6
0-13-016143-8
C How to Program
C How to Program
C++ How to Program
Internet and World Wide Web How
to Program
Java How to Program
Java How to Program
Visual Basic 6 How to Program
0-13-012507-5
0-13-899394-7
0-13-456955-5
 2000 Deitel & Associates, Inc. All rights reserved.
Edition Yea r
Publisher
Number Published ID
1
2
2
1
1992
1994
1997
1999
1
1
1
1
3
2
1
1999
1997
1998
1
1
1
25.4.3 ORDER BY Clause (III)
• ORDER BY can be applied to multiple fields
ORDER BY fieldName1 SortingOrder, fieldName2 SortingOrder, …
• When we construct a query
– Create one long string containing query
– Multiple lines and indentation only used for readability when
query statement is displayed in text
 2000 Deitel & Associates, Inc. All rights reserved.
25.4.4 Using INNER JOIN to Merge Data from
Multiple Tables
• INNER JOIN Clause
– Merges data from multiple tables into single view
– Referred to as joining the tables
– Placed in the FROM clause of an SQL query
• Simplest form
SELECT fieldName1, fieldName2, …
FROM Table1 INNER JOIN Table2 ON Table1.field = Table2.field
 2000 Deitel & Associates, Inc. All rights reserved.
25.4.4 Using INNER JOIN to Merge Data from
Multiple Tables (II)
• ON part of INNER JOIN
– Specifies fields from each table to be compared to determine
records to be selected
– “TableName.” syntax required if fields have same name in
both tables
– Example:
SELECT FirstName, LastName, ISBN
FROM Authors INNER JOIN AuthorISBN
ON Authors.AuthorID = AuthorISBN.AuthorID
ORDER BY LastName, FirstName
 2000 Deitel & Associates, Inc. All rights reserved.
25.4.4 Using INNER JOIN to Merge Data from
Multiple Tables (III)
First Last ISBN
Name Name
First Last ISBN
Name Name
Harvey
Deitel
0-13-013249-7
(Continued from bottom of previous column) (Continued from bottom of previous column)
Harvey
Deitel
0-13-271974-6
Harvey
Deitel
0-13-020522-2
Paul
Deitel
0-13-085609-6
Harvey
Deitel
0-13-528910-6
Harvey
Deitel
0-13-020522-2
Paul
Deitel
0-13-013249-7
Harvey
Deitel
0-13-083055-0
Harvey
Deitel
0-13-010671-2
Paul
Deitel
0-13-226119-7
Harvey
Deitel
0-13-565912-4
Harvey
Deitel
0-13-118043-6
Paul
Deitel
0-13-899394-7
Harvey
Deitel
0-13-083054-2
Paul
Deitel
0-13-010671-2
Paul
Deitel
0-13-565912-4
Harvey
Deitel
0-13-899394-7
Paul
Deitel
0-13-083055-0
Paul
Deitel
0-13-528910-6
Harvey
Deitel
0-13-904947-9
Paul
Deitel
0-13-082927-7
Paul
Deitel
0-13-085248-1
Harvey
Deitel
0-13-226119-7
Paul
Deitel
0-13-083054-2
Paul
Deitel
0-13-456955-5
Harvey
Deitel
0-13-082928-5
Paul
Deitel
0-13-082714-2
Paul
Deitel
0-13-271974-6
Harvey
Deitel
0-13-456955-5
Paul
Deitel
0-13-118043-6
Paul
Deitel
0-13-013249-7
Harvey
Deitel
0-13-015870-4
Paul
Deitel
0-13-118043-6
Tem
Nieto
0-13-082928-5
Harvey
Deitel
0-13-085609-6
Paul
Deitel
0-13-082928-5
Tem
Nieto
0-13-565912-4
Harvey
Deitel
0-13-085248-1
Paul
Deitel
0-13-082925-0
Tem
Nieto
0-13-456955-5
Harvey
Deitel
0-13-082925-0
Paul
Deitel
0-13-020522-2
Tem
Nieto
0-13-085609-6
Harvey
Deitel
0-13-016143-8
Paul
Deitel
0-13-904947-9
Tem
Nieto
0-13-016143-8
Harvey
Deitel
0-13-082714-2
Paul
Deitel
0-13-012507-5
Tem
Nieto
0-13-020522-2
Harvey
Deitel
0-13-082927-7
Paul
Deitel
0-13-015870-4
Tem
Nieto
0-13-015870-4
Harvey
Deitel
0-13-012507-5
Paul
Deitel
0-13-016143-8
Tem
Nieto
0-13-904947-9
Tem
Nieto
0-13-904947-9
(Continued at top of next column)
 2000 Deitel & Associates, Inc. All rights reserved.
(Continued at top of next column)
First Last ISBN
Name Name
24.4.5 TitleAuthor Query from Books.mdb
• Predefined query: TitleAuthor
– Table containing book title, ISBN number, author’s first and last names,
year published, and publisher’s name
– Note the nested INNER JOIN structures
– Note: spacing and indenting only for readability
SELECT Titles.Title, Titles.ISBN, Authors.FirstName,
Authors.Lastname, Titles.YearPublished,
Publishers.PublisherName
FROM
( Publishers INNER JOIN Titles
ON Publishers.PublisherID = Titles.PublisherID )
INNER JOIN
( Authors INNER JOIN AuthorsISBN
ON Authors.AuthorID = AuthorISBN.AuthorID )
ON Titles.ISBN = AuthorsISBN.ISBN
ORDER BY Titles.Title
 2000 Deitel & Associates, Inc. All rights reserved.
24.4.5 TitleAuthor Query from Books.mdb (II)
Portions of TitleAuthor query output
Title
ISBN
First Last Year
Publisher
Name Name Published Name
C How to Program
C How to Program
C How to Program
C How to Program
C++ How to Program
C++ How to Program
0-13-226119-7
0-13-118043-6
0-13-118043-6
0-13-226119-7
0-13-528910-6
0-13-528910-6
Paul
Paul
Harvey
Harvey
Harvey
Paul
Deitel
Deitel
Deitel
Deitel
Deitel
Deitel
1994
1992
1992
1994
1997
1997
Prentice Hall
Prentice Hall
Prentice Hall
Prentice Hall
Prentice Hall
Prentice Hall
Internet and World Wide Web
How to Program
Internet and World Wide Web
How to Program
Internet and World Wide Web
How to Program
0-13-016143-8
Paul
Deitel
1999
Prentice Hall
0-13-016143-8
Harvey
Deitel
1999
Prentice Hall
0-13-016143-8
Tem
Nieto
1999
Prentice Hall
Java How to Program
Java How to Program
Java How to Program
Java How to Program
0-13-012507-5
0-13-899394-7
0-13-899394-7
0-13-012507-5
Harvey
Paul
Harvey
Paul
Deitel
Deitel
Deitel
Deitel
1999
1997
1997
1999
Prentice Hall
Prentice Hall
Prentice Hall
Prentice Hall
Visual Basic 6 How to Program 0-13-456955-5
Visual Basic 6 How to Program 0-13-456955-5
Visual Basic 6 How to Program 0-13-456955-5
Harvey
Paul
Tem
Deitel
Deitel
Nieto
1998
1998
1998
Prentice Hall
Prentice Hall
Prentice Hall
 2000 Deitel & Associates, Inc. All rights reserved.
25.4.6 Inserting a Record
• INSERT INTO operation
– Inserts data into the table (e.g; adds a record)
– Simplest form:
List of field names into
Table into
which record
will be inserted
which to insert values
(not required if inserting
complete record)
INSERT INTO TableName ( fieldName1, fieldName2, …, fieldNameN )
Values ( value1, value 2, …, valueN )
KEYWORDS
Values to be inserted into fields
– in order of fields listed before
– The single quote character should be used as a delimiter for
strings to be inserted into the database
 2000 Deitel & Associates, Inc. All rights reserved.
25.4.6 Inserting a Record
• Sample insert operation
– Note: AuthorID field not specified because it has been set up in Microsoft
Access, our database software, as an auto-numbered field
INSERT INTO Authors ( FirstName, LastName, YearBorn )
Values ( ‘Sue’, ‘Smith’, 1960 )
• Result
AuthorID
FirstName
LastName
YearBorn
1
Harvey
Deitel
1946
2
Paul
Deitel
1968
3
Tem
Nieto
1969
4
Sue
Smith
1960
 2000 Deitel & Associates, Inc. All rights reserved.
25.4.7 Updating a Record
• Modify a record with the UPDATE operation
UPDATE TableName
SET fieldName1 = value1, fieldName2 = value2, …,
fieldNameN = valueN
WHERE criteria
• Example:
UPDATE Authors
SET YearBorn = 1969
WHERE LastName = ‘Deitel’, FirstName = ‘Paul’
– Changes YearBorn value for Paul Deitel in Authors table to 1969
 2000 Deitel & Associates, Inc. All rights reserved.
25.5 Registering Books.mdb as an ODBC Data
Source
• Open DataBase Connectivity (ODBC) Application
Programming Interface (API)
– Developed by Microsoft to allow Windows applications to communicate in
a uniform manner with relational databases
• To execute an SQL query
– Program must be able to access the database
• Database must be given a System Data Source Name (DSN) on the
server
• Database must be registered as an ODBC source
• ODBC Driver written by vendors
– Uses ODBC API to provide uniform access to the database
• For specific instructions
– See section 25.5 in your textbook
 2000 Deitel & Associates, Inc. All rights reserved.
25.6 ActiveX Data Objects (ADO)
• Microsoft’s Universal Data Access (UDA)
– Architecture designed for high-performance data access to
• Relational data sources
• Non-relational data sources
• Mainframe/legacy data sources
UDA Architecture:
Application or Browser
ADO
OLE DB
ODB
C
Relational data sources
Mainframe/legacy data
Non-relational data sources
 2000 Deitel & Associates, Inc. All rights reserved.
25.6 ActiveX Data Objects (ADO)
• UDA consists of three primary components
– OLE DB
• Core of UDA architecture
• Provides low-level access to any data source
– ODBC
• C programming language library
• Uses SQL to access data
– ActiveX Data Controls
• Simple object model
• Provides uniform access to any data source by interacting with OLE
DB
 2000 Deitel & Associates, Inc. All rights reserved.
25.6 ActiveX Data Objects (ADO)
• ADO object model
– Provides objects and collections
Object/ Collection
Description
Connection object
Command object
The connection to the data source.
Contains the query that will interact with the database (the data
source) to manipulate data.
Parameter object
Contains information needed by a Command object to query
the data source.
Parameters collection
Error object
Errors collection
Contains one or more Parameter objects.
Recordset object
Contains zero or more records that match the database query.
Collectively this group of records is called a recordset.
Field object
Fields collection
Contains the value (and other attributes) of one data source field.
Created when an error occurs while accessing data.
Contains one or more Error objects.
Contains one or more Field objects.
 2000 Deitel & Associates, Inc. All rights reserved.
25.7 Remote Data Services (RDS)
• RDS
– Emerging Microsoft technology for client-side database
manipulation over the internet
– Recordsets retrieved on the server using ADO and sent to
client browser
• Called disconnected recordset
– Client can execute queries against the recordset
– Similar to Tabular Data Control
• RDS provides mechanism for sending updated records to Web server
• Tabular Data Control does not
• RDS is still developing
– Future releases will work with Personal Web Server (PWS)
– Server-side setup complex and developing rapidly
 2000 Deitel & Associates, Inc. All rights reserved.
25.7 Remote Data Services (RDS) (II)
RDS Architecture
Client
Browser
Server
PWS/IIS
RDS
ADO
OLE DB
ODB
C
Relational data sources
Mainframe/legacy data
Non-relational data sources
• RDS still developing
– Future releases will work with PWS
– Server-side setup complex and developing rapidly
 2000 Deitel & Associates, Inc. All rights reserved.
25.7 Remote Data Services (RDS) (III)
• RDS implemented as client-side ActiveX control
– Named RDS.Datacontrol
Properties Table
Property
Description
Connect
The data source name (DSN) of a Web server’s database.
Sql
The actual query to execute against the database.
Server
Indicates the Web server to which the RDS.Datacontrol connects.
Recordset
The actual recordset downloaded from the Web server.
Methods Table
Method
Description
Refresh
Executes a query against the database. Also forces any
records that have not been uploaded to the server to upload.
SubmitChanges
Sends updated records to the Web server.
CancelUpdate
Cancels all records that were updated (but not sent to the
server) and reverts them back to their original values.
 2000 Deitel & Associates, Inc. All rights reserved.
25.7 Remote Data Services (RDS) (IV)
• RDS.Datacontrol
– Transfers data asynchronously
• Transfer occurs in parallel with other executing code
• ReadyState property stores control’s current state
– Uses constants to declare states used in the program
Sta te
Description
adcReadyStateLoaded
The recordset does not contain any data because the
query has not completed executing.
adcReadyStateInteractive Some records in the recordset are available, but others
are still being downloaded (or uploaded).
adcReadyStateComplete
All recordset records are available. The download (or
upload) is complete.
– state can have one of three values
• 0 – no user activity
• 1 – download state
• 2 – upload state
 2000 Deitel & Associates, Inc. All rights reserved.
1<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
2<HTML>
3<!--Fig. 25.38: rds.html -->
4
5<!--Creates an instance of the RDS.Datacontrol-->
6<OBJECT CLASSID = "clsid:BD96C556-65A3-11D0-983A-00C04FC29E33"
7
ID = deitelDC WIDTH = 0 HEIGHT = 0>
8</OBJECT>
9
10<SCRIPT LANGUAGE = VBScript>
11<!-12Option Explicit
13
14<!-- Microsoft predefined constants -->
15Const adcReadyStateLoaded = 2
16Const adcReadyStateInteractive = 3
17Const adcReadyStateComplete = 4
18
19Dim state
20
21Public Sub window_OnLoad()
22
’ Set the state machine at the first state
23
StatusText.Value = "Click Find."
24
state = 0
25End Sub
26
27Public Sub deitelDC_OnReadyStateChange()
28
If state = 1 Then
29
Select Case deitelDC.ReadyState
30
’ Just started downloading, there is no
31
’ data to look at.
 2000 Deitel & Associates, Inc. All rights reserved.
Outline
1.1 Define OBJECT
2.1 Open and define
<SCRIPT> tag
2.2 Set predefined
ReadyState constants
2.3 Set Initial
StatusText.Value
3.1 Define
deitelDC_OnReadySt
ateChange() Sub
procedure
3.2 Open Select
structure inside if
structure for
downloading actions
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
Case adcReadyStateLoaded
StatusText.Value = "Downloading..."
Outline
’ Partially downloaded the data,
’ there is more to come.
Case adcReadyStateInteractive
StatusText.Value = "Still downloading..."
3.3 set
StatusText.value
downloading
’ Completely downloaded the data,
’ there’s no more coming.
Case adcReadyStateComplete
3.4 Fill in fields for
updating
’ Fill in the fields for updating
’ Get ISBN field to prove we got the right one
FoundISBN.Value = deitelDC.Recordset( "ISBN" )
’ The title we want to modify
FoundTitle.Value = deitelDC.Recordset( "Title" )
’ OK for updating. Everything worked.
StatusText.Value = "Finished downloading."
state = 2
End Select
ElseIf state = 2 Then
Select Case deitelDC.ReadyState
’ Started uploading, there is no data sent.
Case adcReadyStateLoaded
’ OK for updating. Everything worked.
StatusText.Value = "Uploading..."
 2000 Deitel & Associates, Inc. All rights reserved.
3.5 Set final
StatusText.Value
downloading value
4.1 Open select
structure inside
ElseIf structure for
uploading
4.2 Set first
StatusText.value
output for uploading
Case
63
64
’ Partially uploaded the data, there is more to send.
65
Case adcReadyStateInteractive
66
’ OK for updating. Everything worked.
67
StatusText.value = "Still Uploading..."
68
69
’ Completely downloaded the data,
70
’ there is no more coming.
71
’ Goto readystate = complete if it works
72
Case adcReadyStateComplete
73
’ OK for updating. Everything worked.
74
StatusText.value = "Finished updating."
75
state = 0
76
End Select
77
End If
78 End Sub
79
80 Public Sub Find_OnClick()
81
’ Validate the input values. Never assume valid
82
’ data is in the text boxes.
83
84
’ Server.Value will be used to designate the
85
’ server with the database
86
If Server.Value = "" Then
87
Call Msgbox( "Please specify a web server. " & _
88
"Suggest: http://xxx.xxx.xxx.xxx" )
89
90
’ ISBN.Value is the record we want to search for
91
ElseIf ISBN.value = "" Then
92
Call MsgBox( "Please specify an ISBN to examine. " & _
93
"Suggest: 0-13-226119-7" )
 2000 Deitel & Associates, Inc. All rights reserved.
Outline
4.3 Finish setting
StatusText.value’s
for uploading
4.4 Close all structures
5.1 Define OnClick()
Sub procedure
5.2 Validate input
values
94
95
’ All data is probably valid so begin the data download.
96
Else
97
’ Request the data from.
98
deitelDC.Server = Server.Value
99
100
’ Set the SQL query.
101
deitelDC.SQL = "SELECT ISBN, " & _
102
5.3 Begin data
download
5.4 Set values
"Title FROM Titles WHERE ISBN = ’" & ISBN.Value & "’"
103
104
’ Set the DSN to fetch the data.
105
deitelDC.Connect = "DSN=Books;"
106
107
’ Tell the server to begin sending the data to us.
108
Call deitelDC.Refresh()
109
state = 1
110
Outline
5.5 Tell server to begin
sending data - call
deitelDC.Refresh()
Sub procedure
5.6 Close structures
End If
111 End Sub
112
113 Public Sub Update_OnClick()
114
’ If everything worked above, we can change
115
’ the record in the database
116
If state = 2 Then
117
’ We are only updating this field in the database.
118
’ so we fetch the value from the text box and set it to go
119
’ back to the server for update
120
deitelDC.Recordset( "Title" ) = FoundTitle.Value
121
 2000 Deitel & Associates, Inc. All rights reserved.
6.1 Define
Update_OnClick() Sub
procedure
6.2 Fetch value from
text box, setup to go
back to server
122
’ Save these changes
123
Call deitelDC.SubmitChanges()
124
125
’ Refresh after submit operation
126
Call deitelDC.Refresh()
127
End If
128End Sub
129-->
130</SCRIPT>
131
132<HEAD>
133<META NAME = VI60_defaultClientScript CONTENT = VBScript>
134</HEAD>
135
136<BODY>
137RDS Example--Correct titles in a remote database<BR>
138Record to Find<BR>
139<TABLE BORDER = "0" CELLPADDING = "0">
140<TR>
141<TD>Server:</TD>
142<TD><INPUT ID= server NAME= server VALUE= "http://xxx.xxx.xxx.xxx"
143
TYPE = "text" SIZE = 60></TD>
144</TR>
145<TR>
146<TD>ISBN:</TD>
147<TD><INPUT ID = ISBN NAME = ISBN VALUE = "0-13-226119-7"
148
TYPE = "text"></TD>
149</TR>
150</TABLE>
151<INPUT TYPE = "button" ID = "Find" NAME = "Find" VALUE= "Find"><BR>
152<BR>
153Results<BR>
 2000 Deitel & Associates, Inc. All rights reserved.
Outline
6.3 Save changes and
refresh
6.4 Close all structures
and </SCRIPT> tag
7.1 Insert and define
META tag
7.2 Insert and define
searching INPUTs
7.3 Insert button
INPUT: “Find”
154<TABLE BORDER = "0" CELLPADDING = "0">
155<TR>
156<TD>Found ISBN( readonly ):</TD>
157<TD><INPUT ID = FoundISBN READONLY NAME = FoundISBN TYPE = "text">
158</TD>
159</TR>
160<TR>
161<TD>Found Title:</TD>
162<TD><INPUT ID = FoundTitle NAME = FoundTitle TYPE = "text"></TD>
163</TR>
164</TABLE>
165<INPUT TYPE = "button" ID = "Update" NAME = "Update"
166
VALUE = "Update Title"><BR>
167<BR>
168Status:<INPUT TYPE = "text" ID = "StatusText" NAME = "StatusText"
169
170</BODY>
171</HTML>
SIZE = 30 READONLY VALUE = "Click Find."><BR>
 2000 Deitel & Associates, Inc. All rights reserved.
Outline
7.4 Insert and define
Results INPUT
elements
7.5 Insert button
INPUT: “Update
Title”
7.6 Insert StatusText
INPUT textbox
25.7 Remote Data Services (RDS) (V)
Document Output 1
The
page is
loaded
 2000 Deitel & Associates, Inc. All rights reserved.
25.7 Remote Data Services (RDS) (VI)
Document Output 2
The use has clicked
the Find button
which results in the
Found ISBN and
Found Title
fields being
populated
 2000 Deitel & Associates, Inc. All rights reserved.
25.7 Remote Data Services (RDS) (VII)
Document Output 3
User has
edited the
Found
Title field
 2000 Deitel & Associates, Inc. All rights reserved.
25.7 Remote Data Services (RDS) (VIII)
Document Output 4
User has
clicked
Update
Title
 2000 Deitel & Associates, Inc. All rights reserved.
25.7 Remote Data Services (RDS) (IX)
Document Output 5
User has
clicked
Find
 2000 Deitel & Associates, Inc. All rights reserved.