ASP & Databases - Mark Dixon`s web site

Download Report

Transcript ASP & Databases - Mark Dixon`s web site

11 – Persistent data storage:
relational databases and ADO
Mark Dixon, SoCCE
SOFT 131
Page 1
Session Aims & Objectives
• Aims
– To introduce the fundamental ideas involved in
persistent data storage and relational databases
• Objectives,
by end of this week’s sessions, you should be able to:
– create a relational database table
– create a web page (ASP) that displays data
from a single table in a database
Mark Dixon, SoCCE
SOFT 131
Page 2
Persistent Data Storage
• So far
– all programs lose data when closed
• Not realistic
– typically data stored to persistent storage device
(e.g. hard disk, key drive, floppy disk, CD-RW)
• Use either
– flat files
– database (relational, or object oriented)
Mark Dixon, SoCCE
SOFT 131
Page 3
Example: People (Specification)
• User requirement:
– Display list of people from database online
• How:
– Combine our knowledge of:
• ASP (active server pages)
• ADO (activeX data objects)
Mark Dixon, SoCCE
SOFT 131
Page 4
Example: People (Database)
• Information organised into
– tables (e.g. person)
– fields (e.g. phone)
– records (e.g. 1 Dixon Mark 01752 232556 …)
Person
ID
1
2
3
4
5
Surname
Dixon
Smith
Jones
Bloggs
Johnson
Mark Dixon, SoCCE
Field
Record
Forenames
Mark
John
Sally
Fred
Genny
Phone
01752 232556
01752 111111
01752 888888
01752 123123
01752 987987
SOFT 131
email
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
Page 5
Example: Music (Database)
• How many fields?
• How many records?
Track
Mark Dixon, SoCCE
Track Title
Artist Name
Country
Paranoid
Black Sabbath
UK
Falling in Love
Aerosmith
US
Pink
Aerosmith
US
Love in an Elevator
Aerosmith
US
Smooth Criminal
Alien Ant Farm
US
Meaning of Life
Disturbed
US
The Game
Disturbed
US
Voices
Disturbed
US
Down with the Sickness
Disturbed
US
SOFT 131
Page 6
Database Management Systems
• DBMS provides facilities for:
– creating and changing databases
• add/remove records
• add/remove fields
• add/remove data
– For example:
•
•
•
•
•
•
Mark Dixon, SoCCE
Microsoft Access
dBase
Borland Paradox
MySQL
Microsoft SQL Server
Oracle
SOFT 131
home/small business
large scale
Page 7
MS Access
Music database
Mark Dixon, SoCCE
SOFT 131
Page 8
ActiveX Data Objects (what & why)
• ActiveX Data Objects (ADO)
– common database interface
• allow you to write code for any DBMS
MS Access
VB or
VB Script
code
ADO
DB front end
Mark Dixon, SoCCE
MS SQL Server
…
…
SOFT 131
Page 9
ADO Record Set Object
• Used to interact with tables
• Properties
– BOF: true if at start of record set (before first record)
– EOF: true if at end of record set (after last record)
– Fields: used to get and set data values
• Methods
–
–
–
–
–
–
Open: used to open record set
MoveFirst: moves focus to first record
MovePrevious: moves focus to previous record
MoveNext: moves focus to next record
MoveLast: moves focus to last record
Close: closes record set
Mark Dixon, SoCCE
SOFT 131
Page 10
Using Record Sets
Connect string – identify database
<%
Const cs = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=D:\Music.mdb; Persist Security Info=False"
Dim rs
Set rs = CreateObject("ADODB.Recordset")
rs.Open "Person", cs
Do Until rs.EOF
…
rs.MoveNext
Loop
Move to next record
rs.Close
Set rs = Nothing
%>
Mark Dixon, SoCCE
Open record set with table
Close record set
SOFT 131
Page 11
UDL files
• Generate connection strings
– Right click on desktop
– Select New, Text Document
– Rename to *.UDL (Yes to warning message)
– Double click
– Select provider
– Click Next
– Select or enter DB name
– Click Test Connection button
– Click OK
– Open with Notepad, cut & paste text
Mark Dixon, SoCCE
SOFT 131
Page 12
People.asp
Example: People
<html>
<head><title>Personal Address Book</title></head>
<body>
<p><center><b><font size=+2>
Personal Address Book</font></b></center>
rs
<%
Const cs = "Provider=…;Data Source=D:\People.mdb; "
Dim rs
Set rs = CreateObject("ADODB.Recordset")
rs.Open "Person", cs
Do Until rs.EOF
Response.Write rs.Fields("Surname").Value
Response.Write "<br>"
rs.MoveNext
Loop
rs.Close
Set rs = Nothing
%>
ID
1
2
3
4
5
Surname
Dixon
Smith
Jones
Bloggs
Anderson
Forenames
Mark
John
Sally
Fred
Genny
Phone
01752 232556
01752 111111
01752 888888
01752 123123
01752 987987
email
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
</body>
</html>
Mark Dixon, SoCCE
SOFT 131
Page 13
Example: People (recordset 1)
<html>
<head><title>Personal Address Book</title></head>
<body>
<p><center><b><font size=+2>
Personal Address Book</font></b></center>
rs
<%
Const cs = "…"
Dim rs
Set rs = CreateObject("ADODB.Recordset")
rs.Open "Person", cs
Do Until rs.EOF
Response.Write rs.Fields("Surname").Value
Response.Write "<br>"
rs.MoveNext
Loop
rs.Close
Set rs = Nothing
%>
ID
1
2
3
4
5
Surname
Dixon
Smith
Jones
Bloggs
Anderson
Forenames
Mark
John
Sally
Fred
Genny
Phone
01752 232556
01752 111111
01752 888888
01752 123123
01752 987987
email
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
Dixon
</body>
</html>
Mark Dixon, SoCCE
SOFT 131
Page 14
Example: People (recordset 2)
<html>
<head><title>Personal Address Book</title></head>
<body>
<p><center><b><font size=+2>
Personal Address Book</font></b></center>
rs
<%
Const cs = "…"
Dim rs
Set rs = CreateObject("ADODB.Recordset")
rs.Open "Person", cs
Do Until rs.EOF
Response.Write rs.Fields("Surname").Value
Response.Write "<br>"
rs.MoveNext
Loop
rs.Close
Set rs = Nothing
%>
ID
1
2
3
4
5
Surname
Dixon
Smith
Jones
Bloggs
Anderson
Forenames
Mark
John
Sally
Fred
Genny
Phone
01752 232556
01752 111111
01752 888888
01752 123123
01752 987987
email
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
Dixon
Smith
</body>
</html>
Mark Dixon, SoCCE
SOFT 131
Page 15
Example: People (recordset 3)
<html>
<head><title>Personal Address Book</title></head>
<body>
<p><center><b><font size=+2>
Personal Address Book</font></b></center>
rs
<%
Const cs = "…"
Dim rs
Set rs = CreateObject("ADODB.Recordset")
rs.Open "Person", cs
Do Until rs.EOF
Response.Write rs.Fields("Surname").Value
Response.Write "<br>"
rs.MoveNext
Loop
rs.Close
Set rs = Nothing
%>
ID
1
2
3
4
5
Surname
Dixon
Smith
Jones
Bloggs
Anderson
Forenames
Mark
John
Sally
Fred
Genny
Phone
01752 232556
01752 111111
01752 888888
01752 123123
01752 987987
email
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
Dixon
Smith
Jones
</body>
</html>
Mark Dixon, SoCCE
SOFT 131
Page 16
Example: People (recordset 4)
<html>
<head><title>Personal Address Book</title></head>
<body>
<p><center><b><font size=+2>
Personal Address Book</font></b></center>
rs
<%
Const cs = "…"
Dim rs
Set rs = CreateObject("ADODB.Recordset")
rs.Open "Person", cs
Do Until rs.EOF
Response.Write rs.Fields("Surname").Value
Response.Write "<br>"
rs.MoveNext
Loop
rs.Close
Set rs = Nothing
%>
ID
1
2
3
4
5
Surname
Dixon
Smith
Jones
Bloggs
Anderson
Forenames
Mark
John
Sally
Fred
Genny
Phone
01752 232556
01752 111111
01752 888888
01752 123123
01752 987987
email
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
Dixon
Smith
Jones
Bloggs
</body>
</html>
Mark Dixon, SoCCE
SOFT 131
Page 17
Example: People (recordset 5)
<html>
<head><title>Personal Address Book</title></head>
<body>
<p><center><b><font size=+2>
Personal Address Book</font></b></center>
rs
<%
Const cs = "…"
Dim rs
Set rs = CreateObject("ADODB.Recordset")
rs.Open "Person", cs
Do Until rs.EOF
Response.Write rs.Fields("Surname").Value
Response.Write "<br>"
rs.MoveNext
Loop
rs.Close
Set rs = Nothing
%>
ID
1
2
3
4
5
Surname
Dixon
Smith
Jones
Bloggs
Anderson
Forenames
Mark
John
Sally
Fred
Genny
Phone
01752 232556
01752 111111
01752 888888
01752 123123
01752 987987
email
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
Dixon
Smith
Jones
Bloggs
Anderson
</body>
</html>
Mark Dixon, SoCCE
SOFT 131
Page 18
Example: People (recordset 6)
<html>
<head><title>Personal Address Book</title></head>
<body>
<p><center><b><font size=+2>
Personal Address Book</font></b></center>
People.asp
rs
<%
Const cs = "…"
Dim rs
Set rs = CreateObject("ADODB.Recordset")
rs.Open "Person", cs
Do Until rs.EOF
Response.Write rs.Fields("Surname").Value
Response.Write "<br>"
rs.MoveNext
Loop
rs.Close
Set rs = Nothing
%>
ID
1
2
3
4
5
Surname
Dixon
Smith
Jones
Bloggs
Anderson
Forenames
Mark
John
Sally
Fred
Genny
Phone
01752 232556
01752 111111
01752 888888
01752 123123
01752 987987
email
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
Dixon
Smith
Jones
Bloggs
Anderson
</body>
</html>
Mark Dixon, SoCCE
SOFT 131
Page 19
Tutorial Exercise: People
• Task 1: Create your own People database:
–
–
–
–
–
Open MS Access
Create a new database file
Create a new table
Create fields
Enter data
• Task 2: Create the asp page (as per the lecture) to
display data from the database.
• Task 3: Modify your page so that it displays phone
number as well as the person's name.
• Task 4: Modify your page so that the user can type
a letter, and only names starting with that letter are
displayed.
Mark Dixon, SoCCE
SOFT 131
Page 20
Tutorial Exercise: Music
• Task 1: Create your own Music Database.
• Task 2: Create an asp page to display data
from this database.
• Task 3: Modify your page so that the user
can type the name of an artist, and only
tracks by that artist are displayed
• Task 4: Make your page case in-sensitive
(i.e. UPPER or lower case makes no
difference)
Mark Dixon, SoCCE
SOFT 131
Page 21