Mark Dixon Page 1 23 – Web applications: Writing data to Databases using ASP
Mark Dixon Page 2 Questions: HTML in VB Are these correct (assume variables and fields exist)? f = f + rs.Fields("Description").value h = h + rs.Fields(" Name").value a = " " + a " " html = html + h = " " + h + " "
Mark Dixon Page 3 Questions: Databases How many primary keys? How many foreign keys? 3 2
Mark Dixon Page 4 Session Aims & Objectives Aims –To introduce the fundamental ideas involved in using server-side code to write data to databases Objectives, by end of this week’s sessions, you should be able to: –create an ASP web page that allows the user to store data in database
Mark Dixon Page 5 Example: Person v1 (Specification) User requirement: –Display people's details from database online –need 2 pages: smith jones dixon list of people jones sally person's details
Mark Dixon Page 6 Example: PeopleList.aspx v1 Sub Page_Load() Const cs = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\People.mdb;" Dim rs As Object Dim s As String rs = CreateObject("ADODB.Recordset") rs.Open("Person", cs) s = "" Do Until rs.EOF() s = s & rs.Fields("Surname").Value & " " rs.MoveNext() Loop parData.InnerHtml = s rs.Close() rs = Nothing End Sub
Mark Dixon Page 7 Example: PeopleList.aspx v2 Sub Page_Load() Const cs = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\People.mdb;" Dim rs As Object Dim s As String rs = CreateObject("ADODB.Recordset") rs.Open("Person", cs) s = "" Do Until rs.EOF() s = s & " " s = s & rs.Fields("Surname").Value & " " rs.MoveNext() Loop parData.InnerHtml = s rs.Close() rs = Nothing End Sub now links
Mark Dixon Page 8 Example: Person.aspx v2 Sub Page_Load() Const cs = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\People.mdb;" Dim sql As String Dim rs As Object Dim s As String sql = "SELECT * FROM Person WHERE id=" & Request.QueryString("id") rs = CreateObject("ADODB.Recordset") rs.Open(sql, cs) s = "" If Not rs.EOF() Then txtSurname.Value = rs.Fields("Surname").Value End If rs.Close() rs = Nothing End Sub Back to People List Surname: reads querystring (from previous page) displays data for selected record only
Mark Dixon Page 9 Example: Person v2 (Specification) User requirement: Display person’s details from database online –Change surname and save to database
Mark Dixon Page 10 Database Permissions 1 Windows Explorer –Tools –Folder Options –View Tab Need to turn 'simple file sharing' off (as this disables the security tab in file properties)
Mark Dixon Page 11 Database Permissions 2 In order for ASP to write to a database –Need to give write access to Internet Guest Account for database file (People.mdb) Right-click on file in Windows Explorer (the following screens are for Windows XP)
Mark Dixon Page 12 Database Permissions 3 Click Security tab Click Add button
Mark Dixon Page 13 Database Permissions 4 Click Advanced button
Mark Dixon Page 14 Select Internet Guest Account IUSR_ … Click Find button Click user Click OK button Database Permissions 5
Mark Dixon Page 15 Database Permissions 6 Select Internet Guest Account Ensure write access is on Repeat for ASPNET account
Mark Dixon Page 16 Changing Data Recordset methods –AddNew: inserts a new record and makes it current –rs.Fields("FieldName").value = "Data" –Update: sends changes back to DB –Delete: deletes currently selected record
Mark Dixon Page 17 Writing data to a database create recordset open recordset –dynamic cursor (3), pessimistic locking (3) to add a record –use to AddNew method rs.AddNew to delete a record –use the Delete method rs.Delete to change existing data –assign a new value to fields rs.Fields("Surname").Value = "Fred"
Mark Dixon Page 18 Example: Person.aspx v3 Sub Page_Load() Const cs = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\People.mdb;" Dim sql As String Dim rs As Object Dim s As String sql = "SELECT * FROM Person WHERE id=" & Request.QueryString("id") rs = CreateObject("ADODB.Recordset") rs.Open(sql, cs, 3, 3 ) s = "" If Not rs.EOF() Then If Request.Form("btnSave") > "" Then rs.Fields("Surname").Value = txtSurname.Value rs.Update() End If txtSurname.Value = rs.Fields("Surname").Value End If rs.Close() rs = Nothing End Sub Back to People List Surname: Save button works now
Mark Dixon Page 19 Tutorial Exercise: Person Task 1: Get the Person (v1) example from the lecture working. Task 2: Modify your code, so that forename is displayed as well as surname (use a table). Task 3: Get the Person (v2 and v3) example from the lecture working. Task 3: Modify your code, so that a line of text is displayed confirming that data has been saved. Task 4: Modify your code, so that an add button is included, which allows a new record to be added. Task 5: Modify your code, so that a delete button is included, which allows the current record to be deleted.