Survey
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
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