ASP BAZY DANYCH
2 S. Wolek Wst. do Inf. Połączenie z bazą danych przez ADO (ActiveX Data Object) do: - źródła ODBC - bazy z podanie nazwy sterownika ODBC <% Dim objConn Set objConn = Server.CreateObject( "ADODB.Connection" ) objConn.ConnectionString = "DSN=nazwa_źródła" (kłopotliwe) objConn.ConnectionString = "DRIVER={Microsoft Access Driver (*.mdb)};"_ & "DBQ=" & Server.MapPath("firma.mdb") objConn.Open [użytkownik], [hasło] %> otwieranie połączenia z bazą – obiekt Connection: <% objConn.Close Set objConn = Nothing %> zamykanie połączenia z bazą: często w osobnym pliku i
3 S. Wolek Wst. do Inf. Połączenie z tabelą Dim objRS Set objRS = Server.CreateObject( "ADODB.RecordSet" ) objRS.Open "nazwa_tabeli", objConn, typ_kursora, blokowanie, typ_polecenia objRS.Close Set objRS = Nothing zamykanie połączenia z tabelą: otwieranie połączenia z tabelą – obiekt RecordSet: domyślne adCmdTable objRS.Open "klienci", objConn, 3,3 Przykład: można również objRS.Open polecenie_SQL, objConn, typ_kursora, blokowanie, typ_polecenia
4 S. Wolek Wst. do Inf. Dostęp do danych z tabeli Przykład 2: lista nazwisk klientów : wskaźnik bieżący + ruchy: MoveFirst MoveNext ( MovePrevious ) MoveLast ( Move liczba ) funkcje: BOF (begin of file) EOF (end of file) dostęp do pola: objRecordSet( "nazwa_pola" ) Do While not objRS.EOF ' lub while Response.Write "Nazwisko " & objRS( "nazwisko" ) & " " Response.Write " " objRS.MoveNext Loop ' lub wend
5 S. Wolek Wst. do Inf. Przykład 3: pokazanie listy nazwisk klientów, odczyt numeru wybranego nazwiska <% Do While not objRS.EOF Response.Write " " Response.Write objRS( "nazwisko" ) & " " objRS.MoveNext Loop %> <% dim nr nr = Request.QueryString( "Klienci" ) Response.write "Wybrałeś nazwisko nr : " & nr %> Plik ob_nazwisk.asp (wykonanie rekursywne - sam siebie)
6 S. Wolek Wst. do Inf. Edycja danych w tabeli dodawanie recordSet.AddNew recordSet("pole_1") = "wartość_1" recordSet("pole_2") = "wartość_2"... recordSet.Update modyfikacja recordSet("pole_1") = "wartość_1" recordSet("pole_2") = "wartość_2"... recordSet.Update usuwanie recordSet.Delete
7 S. Wolek Wst. do Inf. Dodawanie rekordu do bazy danych Nazwisko: Miasto: <% objRS.AddNew objRS( "nazwisko" ) = Request.QueryString( "nazwisko" ) objRS( "miasto" ) = Request.QueryString( "miasto" ) objRS.Update %>
8 <% ' zmienna łańcuchowa określająca sterownik i bazę openstr = "driver={Microsoft Access Driver (*.mdb)};" &_ "dbq=" &Server.MapPath("firma.mdb") ' tworzenie obiektu typu connection set polaczenie (Server.CreateObject("ADODB.Connection" ) ' otwarcie połączenia polaczenie.Open openstr Przykłady dotyczą prostej bazy z tabelą Klienci(Identyfikator, Nazwisko) Przykład dostępu do bazy i wyświetlenia zawartości na stronie:
9 'SQL sql = "SELECT * FROM klienci; " ' utworzenie obiektu typu Recordset Set baza = Server.CreateObject("ADODB.Recordset") ' wypełnienie obiektu baza, uaktywnienie polecenia SQL - ' argument polaczenie - obiekt BAZA korzysta z połączenia ' zadeklarowanego w zmiennej polaczenie. baza.Open sql, polaczenie, 3, 3 ' operacje na obiekcie baza baza.MoveFirst Do While Not baza.EOF Response.Write baza("Identyfikator") &_ " " & baza("nazwisko") & " " baza.MoveNext Loop
10 'zamknięcia obiektów baza.Close Set baza = Nothing polaczenie.Close Set polaczenie = Nothing %>
11 <% Option Explicit Response.Expires = 0%> <% Dim polaczenie, baza, sql, id Set polaczenie = Server.CreateObject("ADODB.Connection") polaczenie.Open "driver={Microsoft Access Driver (*.mdb)};" &_ "dbq=" &Server.MapPath("firma.mdb") 'UWAGA: folder z bazą - zabezpieczenia ' albo wszystkie dla Wszyscy ' albo wszystkie dla IUSER\komputer sql = "SELECT * FROM Klienci" Set baza = Server.CreateObject("ADODB.Recordset") baza.Open sql, polaczenie, 3, 3 %> Dodawanie rekordów
12 Dodanie rekordu: <% baza.Movefirst While Not baza.EOF id= baza.Fields("Identyfikator") baza.MoveNext Wend baza.AddNew baza.Fields("Identyfikator").Value = id+1 baza.Fields("Nazwisko").Value = "Kowalski" można także spróbować dodawać dane z formularza baza.UpdateBatch Response.Write ("Dodano klienta Kowalski") baza.Close polaczenie.Close Set baza = Nothing Set polaczenie = Nothing %>
13 <% Response.Expires = 0 DIM strWyj Dim polaczenie, baza, sql, openstr, strOutout Set polaczenie = Server.CreateObject("ADODB.Connection") openstr = "driver={Microsoft Access Driver (*.mdb)};" & "dbq=" &_ Server.MapPath("firma.mdb") polaczenie.Open openstr sql = "DELETE FROM Klienci WHERE Nazwisko='Bula';" set baza = polaczenie.Execute(sql) ' Wyswietlenie rezultatu usuniecia Set baza = polaczenie.Execute("SELECT * FROM Klienci") %> Po usunieciu: Usuwanie rekordów
14 <% While Not baza.EOF strWyj = baza("Nazwisko") Response.Write Server.HTMLEncode(strWyj) & " " baza.MoveNext Wend baza.Close polaczenie.Close Set baza = Nothing Set polaczenie = Nothing %>
15 Strona Testowa Identyfikator: Nazwisko: Formularz
16 <% Option Explicit Response.Expires = 0%> <% Dim Conn, strSQL response.write ("Wykonanie na serwerze") & " " Set Conn = Server.CreateObject("ADODB.Connection") Conn.Open "driver={Microsoft Access Driver (*.mdb)};" & "dbq=" &_ Server.MapPath("firma.mdb") 'Conn.open "test1" strSQL = "INSERT INTO klienci (Identyfikator, Nazwisko) " strSQL = strSQL & "VALUES (" strSQL = strSQL & Request.Querystring("Pole1Formularza") & "," strSQL = strSQL & "'" & Request.Querystring("Pole2Formularza") & "');" Conn.Execute(strSQL) Conn.Close response.write ("Wykonano") & " " %> PLIK ASP
17 ZŁĄCZONE TABELE <% Dim Conn, SQL, baza, suma response.write " Wykonanie obliczeń" & " " 'tworzymy obiekt połączenie Set Conn = Server.CreateObject("ADODB.Connection") Conn.Open "driver={Microsoft Access Driver (*.mdb)};" & "dbq=" &_ Server.MapPath("firma.mdb") 'tworzymy obiekt baza Set baza = Server.CreateObject("ADODB.Recordset")
18 'tworzymy zapytanie tworząc złączenia tabel SQL = "SELECT Zamowienia.Id_zamowienia AS ID, " &_ "Towary.Nazwa as nazwa, " &_ "Zamowienia.Sztuk AS sztuk, " &_ "Towary.cena as cena, " &_ "Klienci.Nazwisko AS nazwisko " &_ "FROM Klienci, Towary, Zamowienia WHERE " &_ "Klienci.Identyfikator=Zamowienia.Id_klienta and " &_ "Towary.Id_towaru=Zamowienia.Id_towaru and " &_ "Zamowienia.Id_klienta=2 " &_ "ORDER BY Zamowienia.Id_zamowienia"
19 'wykonanie zapytania i wypełnienie obiektu baza baza.Open SQL, Conn, 3, 3 'nagłówek tabeli response.write " " &_ " Id zamowienia " &_ " Nazwa " &_ " Sztuk " &_ " Cena " &_ " Wartość " &_ " Nazwisko " &_ "
20 'wypisanie rekordów while not baza.EOF response.write " " &_ " " & baza("ID") & " " &_ " " & baza("nazwa") & " " &_ " " & baza("sztuk") & " " &_ " " & formatCurrency(baza("cena")) &_ " " & _ " " &_ formatCurrency(baza("cena")*baza("sztuk")) & " " &_ " " & baza("nazwisko") & " " BAZA.MOVENEXT wend response.write " "
21 'Obliczenie sumy baza.MoveFirst suma=0 while not baza.EOF suma= suma+ baza("sztuk")*baza("cena") baza.movenext wend response.write "Suma: " & FormatCurrency(suma) &" " 'zamknięcie obiektów baza.Close set baza = nothing Conn.Close set Conn = nothing response.write " Wykonano " %>
22 TWORZENIE FORMULARZA Z DANYMI Z TABELI <% Dim Conn, SQL, baza, suma, miasto response.write " Wykonanie obliczeń dla klienta" & " " & "Wybierz nazwisko:" ' formularz response.write " " response.write "<select size='10' name='nazwisko' " &_ " style='color:red;font-size:16px;font-weight:bolder'>" Set Conn = Server.CreateObject("ADODB.Connection") Conn.Open "driver={Microsoft Access Driver (*.mdb)};" & "dbq=" &_ Server.MapPath("firma.mdb") 'tworzymy obiekt baza, który zgromadzi rekordy Set baza = Server.CreateObject("ADODB.Recordset")
23 'kwerenda SQL = "SELECT Nazwisko from Klienci" baza.Open SQL, Conn, 3, 3 'znaczniki pola kombi i treść listy while not baza.EOF response.write "<option value='" &_ baza("Nazwisko") &_ "'>" &_ baza("Nazwisko")&_ " baza.MoveNext wend
24 'zamknięcie obiektów baza.Close set baza = nothing Conn.Close set Con = nothing response.write " " %>