25
Mark Dixon Page 1 17 – Persistent data storage: relational databases and ADO

Mark Dixon Page 1 17 – Persistent data storage: relational databases and ADO

  • View
    218

  • Download
    1

Embed Size (px)

Citation preview

Page 1: Mark Dixon Page 1 17 – Persistent data storage: relational databases and ADO

Mark Dixon Page 1

17 – Persistent data storage: relational databases and ADO

Page 2: Mark Dixon Page 1 17 – Persistent data storage: relational databases and ADO

Mark Dixon Page 2

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• using ActiveX Data Objects (ADO)

Page 3: Mark Dixon Page 1 17 – Persistent data storage: relational databases and ADO

Mark Dixon Page 3

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)

Page 4: Mark Dixon Page 1 17 – Persistent data storage: relational databases and ADO

Mark Dixon Page 4

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)

Page 5: Mark Dixon Page 1 17 – Persistent data storage: relational databases and ADO

Mark Dixon Page 5

Record Field

Example: People (Database)

ID Surname Forenames Phone email

1 Dixon Mark 01752 232556 [email protected]

2 Smith John 01752 111111 [email protected]

3 Jones Sally 01752 888888 [email protected]

4 Bloggs Fred 01752 123123 [email protected]

5 Johnson Genny 01752 987987 [email protected]

• Information organised into– tables (e.g. person)– fields (e.g. phone)– records (e.g. 1 Dixon Mark 01752 232556 …)

Person

Page 6: Mark Dixon Page 1 17 – Persistent data storage: relational databases and ADO

Mark Dixon Page 6

• How many fields?

• How many records?

Example: Music (Database)

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

Track

Page 7: Mark Dixon Page 1 17 – Persistent data storage: relational databases and ADO

Mark Dixon Page 7

Database Management Systems• DBMS provides facilities for:

– creating and changing databases• add/remove records• add/remove fields• add/remove data

– For example:• Microsoft Access• dBase• Borland Paradox• MySQL• Microsoft SQL Server• Oracle

home/small business

large scale

Page 8: Mark Dixon Page 1 17 – Persistent data storage: relational databases and ADO

Mark Dixon Page 8

MS Access

Music database

Page 9: Mark Dixon Page 1 17 – Persistent data storage: relational databases and ADO

Mark Dixon Page 9

ActiveX Data Objects (what & why)

• ActiveX Data Objects (ADO)– common database interface

• allow you to write code for any DBMS

VB orVB Script

codeADO

MS Access

MS SQL Server

…DB front end

Page 10: Mark Dixon Page 1 17 – Persistent data storage: relational databases and ADO

Mark Dixon Page 10

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

Page 11: Mark Dixon Page 1 17 – Persistent data storage: relational databases and ADO

Mark Dixon Page 11

Using Record Sets

<%Const cs = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=D:\Music.mdb; Persist Security Info=False"Dim rs rs = CreateObject("ADODB.Recordset") rs.Open("Person", cs)

Do Until rs.EOF() … rs.MoveNext() Loop

rs.Close() rs = Nothing%>

Connection string – identify database

Open record set with table

Move to next record

Close record set

Page 12: Mark Dixon Page 1 17 – Persistent data storage: relational databases and ADO

Mark Dixon Page 12

Connection Strings: 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

Page 13: Mark Dixon Page 1 17 – Persistent data storage: relational databases and ADO

Mark Dixon Page 13

People.aspx Example: People<html> <head><title>Personal Address Book</title></head> <body> <p><center><b><font size=+2> Personal Address Book</font></b></center> <% Const cs = "Provider=…;Data Source=D:\People.mdb; " Dim rs 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() rs = Nothing %> </body></html>

rs

Page 14: Mark Dixon Page 1 17 – Persistent data storage: relational databases and ADO

Mark Dixon Page 14

People.aspx Example: People<html> <head><title>Personal Address Book</title></head> <body> <p><center><b><font size=+2> Personal Address Book</font></b></center> <% Const cs = "Provider=…;Data Source=D:\People.mdb; " Dim rs 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() rs = Nothing %> </body></html>

rs

Page 15: Mark Dixon Page 1 17 – Persistent data storage: relational databases and ADO

Mark Dixon Page 15

People.aspx Example: People<html> <head><title>Personal Address Book</title></head> <body> <p><center><b><font size=+2> Personal Address Book</font></b></center> <% Const cs = "Provider=…;Data Source=D:\People.mdb; " Dim rs 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() rs = Nothing %> </body></html>

rsID Surname Forenames Phone email

1 Dixon Mark 01752 232556 [email protected] Smith John 01752 111111 [email protected] Jones Sally 01752 888888 [email protected] Bloggs Fred 01752 123123 [email protected] Anderson Genny 01752 987987 [email protected]

Page 16: Mark Dixon Page 1 17 – Persistent data storage: relational databases and ADO

Mark Dixon Page 16

Example: People<html> <head><title>Personal Address Book</title></head> <body> <p><center><b><font size=+2> Personal Address Book</font></b></center> <% Const cs = "Provider=…;Data Source=D:\People.mdb;" Dim rs 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() rs = Nothing %> </body></html>

rsID Surname Forenames Phone email

1 Dixon Mark 01752 232556 [email protected] Smith John 01752 111111 [email protected] Jones Sally 01752 888888 [email protected] Bloggs Fred 01752 123123 [email protected] Anderson Genny 01752 987987 [email protected]

Dixon

People.aspx

Page 17: Mark Dixon Page 1 17 – Persistent data storage: relational databases and ADO

Mark Dixon Page 17

Example: People<html> <head><title>Personal Address Book</title></head> <body> <p><center><b><font size=+2> Personal Address Book</font></b></center> <% Const cs = "Provider=…;Data Source=D:\People.mdb;" Dim rs 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() rs = Nothing %> </body></html>

rsID Surname Forenames Phone email

1 Dixon Mark 01752 232556 [email protected] Smith John 01752 111111 [email protected] Jones Sally 01752 888888 [email protected] Bloggs Fred 01752 123123 [email protected] Anderson Genny 01752 987987 [email protected]

DixonSmith

People.aspx

Page 18: Mark Dixon Page 1 17 – Persistent data storage: relational databases and ADO

Mark Dixon Page 18

Example: People<html> <head><title>Personal Address Book</title></head> <body> <p><center><b><font size=+2> Personal Address Book</font></b></center> <% Const cs = "Provider=…;Data Source=D:\People.mdb;" Dim rs 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() rs = Nothing %> </body></html>

rsID Surname Forenames Phone email

1 Dixon Mark 01752 232556 [email protected] Smith John 01752 111111 [email protected] Jones Sally 01752 888888 [email protected] Bloggs Fred 01752 123123 [email protected] Anderson Genny 01752 987987 [email protected]

DixonSmithJones

People.aspx

Page 19: Mark Dixon Page 1 17 – Persistent data storage: relational databases and ADO

Mark Dixon Page 19

Example: People<html> <head><title>Personal Address Book</title></head> <body> <p><center><b><font size=+2> Personal Address Book</font></b></center> <% Const cs = "Provider=…;Data Source=D:\People.mdb;" Dim rs 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() rs = Nothing %> </body></html>

rsID Surname Forenames Phone email

1 Dixon Mark 01752 232556 [email protected] Smith John 01752 111111 [email protected] Jones Sally 01752 888888 [email protected] Bloggs Fred 01752 123123 [email protected] Anderson Genny 01752 987987 [email protected]

DixonSmithJonesBloggs

People.aspx

Page 20: Mark Dixon Page 1 17 – Persistent data storage: relational databases and ADO

Mark Dixon Page 20

Example: People<html> <head><title>Personal Address Book</title></head> <body> <p><center><b><font size=+2> Personal Address Book</font></b></center> <% Const cs = "Provider=…;Data Source=D:\People.mdb;" Dim rs 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() rs = Nothing %> </body></html>

rsID Surname Forenames Phone email

1 Dixon Mark 01752 232556 [email protected] Smith John 01752 111111 [email protected] Jones Sally 01752 888888 [email protected] Bloggs Fred 01752 123123 [email protected] Anderson Genny 01752 987987 [email protected]

DixonSmithJonesBloggsAnderson

People.aspx

Page 21: Mark Dixon Page 1 17 – Persistent data storage: relational databases and ADO

Mark Dixon Page 21

Example: People<html> <head><title>Personal Address Book</title></head> <body> <p><center><b><font size=+2> Personal Address Book</font></b></center> <% Const cs = "Provider=…;Data Source=D:\People.mdb;" Dim rs 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() rs = Nothing %> </body></html>

rsID Surname Forenames Phone email

1 Dixon Mark 01752 232556 [email protected] Smith John 01752 111111 [email protected] Jones Sally 01752 888888 [email protected] Bloggs Fred 01752 123123 [email protected] Anderson Genny 01752 987987 [email protected]

DixonSmithJonesBloggsAnderson

People.aspx

Page 22: Mark Dixon Page 1 17 – Persistent data storage: relational databases and ADO

Mark Dixon Page 22

People.aspx Example: People<html> <head><title>Personal Address Book</title></head> <body> <p><center><b><font size=+2> Personal Address Book</font></b></center> <% Const cs = "Provider=…;Data Source=D:\People.mdb; " Dim rs 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() rs = Nothing %> </body></html>

rs

Page 23: Mark Dixon Page 1 17 – Persistent data storage: relational databases and ADO

Mark Dixon Page 23

Example: People v2<script runat="server">Const cs = "Provider=…;Data Source=D:\People.mdb;"

Sub DisplayPeople() Dim rs 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() rs = Nothing End Sub</script>

<html> <head><title>Personal Address Book</title></head> <body> <p><center><b><font size=+2> Personal Address Book</font></b></center> <% DisplayPeople() %> </body></html>

• Use procedure to separate:– code detail– html

Page 24: Mark Dixon Page 1 17 – Persistent data storage: relational databases and ADO

Mark Dixon Page 24

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 People v2 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.

• Task 5: Modify your page so that the user can type a series of numerical digits and only phone numbers containing those digits are displayed.

• Task 6: Modify your page so that it displays the data in an html table. Hint: use Response.Write to insert the appropriate tags.

Page 25: Mark Dixon Page 1 17 – Persistent data storage: relational databases and ADO

Mark Dixon Page 25

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)