240 likes | 375 Views
ASP BAZY DANYCH. Połączenie z bazą danych. przez ADO (ActiveX Data Object) do: - źródła ODBC - bazy z podanie nazwy sterownika ODBC. otwieranie połączenia z bazą – obiekt Connection :. <% Dim objConn Set objConn = Server.CreateObject( "ADODB.Connection" )
E N D
Połączenie z bazą danych • przez ADO (ActiveX Data Object) do: - źródła ODBC - bazy z podanie nazwy sterownika ODBC • otwieranie połączenia z bazą – obiekt Connection: <% 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] %> często w osobnym pliku i <!-- #include file = "plik.asp"--> • zamykanie połączenia z bazą: <% objConn.Close Set objConn = Nothing %> S. Wolek Wst. do Inf.
Połączenie z tabelą • otwieranie połączenia z tabelą – obiekt RecordSet: Dim objRS Set objRS = Server.CreateObject( "ADODB.RecordSet" ) objRS.Open "nazwa_tabeli", objConn, typ_kursora, blokowanie, typ_polecenia domyślne adCmdTable można również objRS.Open polecenie_SQL, objConn, typ_kursora, blokowanie, typ_polecenia Przykład: objRS.Open "klienci", objConn, 3 ,3 • zamykanie połączenia z tabelą: objRS.Close Set objRS = Nothing S. Wolek Wst. do Inf.
Dostęp do danych z tabeli • 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" ) Przykład 2: lista nazwisk klientów : Do Whilenot objRS.EOF ' lub while Response.Write "Nazwisko " & objRS( "nazwisko" ) & "<BR>" Response.Write "<P><HR><P>" objRS.MoveNext Loop ' lub wend S. Wolek Wst. do Inf.
Przykład 3: pokazanie listy nazwisk klientów, odczyt numeru wybranego nazwiska Plik ob_nazwisk.asp (wykonanie rekursywne - sam siebie) <form method="GET" action="ob_nazwisk.asp"> <select name="Klienci"> <% Do While not objRS.EOF Response.Write "<OPTION VALUE='" & objRS( "Identyfikator" ) & "'> " Response.Write objRS( "nazwisko" ) & "<BR>" objRS.MoveNext Loop %> </select><input type="submit" name="Wyślij" value="Wyślij"> </form> <% dim nr nr = Request.QueryString( "Klienci" ) Response.write "Wybrałeś nazwisko nr : " & nr %> 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 S. Wolek Wst. do Inf.
Dodawanie rekordu do bazy danych </form> <form method="GET" action="wpis_BD.asp"> Nazwisko: <input type="text" name="nazwisko" value="Xxx" size="12"><br> Miasto: <input type="text" name="Miasto" value="Rzeszów" size="12"><br> <input type="submit" name="W2" value="Dopisz"> </form> <% objRS.AddNew objRS( "nazwisko" ) = Request.QueryString( "nazwisko" ) objRS( "miasto" ) = Request.QueryString( "miasto" ) objRS.Update %> S. Wolek Wst. do Inf.
Przykłady dotyczą prostej bazy z tabelą Klienci(Identyfikator, Nazwisko) Przykład dostępu do bazy i wyświetlenia zawartości na stronie: <% ' 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
'SQL sql = "SELECT * FROM klienci; " 'utworzenie obiektu typu Recordset Set baza = Server.CreateObject("ADODB.Recordset") 'wypełnienieobiektu 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") & "<br>" baza.MoveNext Loop
'zamknięcia obiektów baza.Close Set baza = Nothing polaczenie.Close Set polaczenie = Nothing %> </p> </body> </html>
Dodawanie rekordów <% @LANGUAGE = VBScript %> <% 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 %>
<HTML><BODY> <p>Dodanie rekordu:</p> <% 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 %> </BODY></HTML>
Usuwanie rekordów <% @LANGUAGE = VBScript %> <% 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") %> <HTML><BODY> <p>Po usunieciu:</p>
<% While Not baza.EOF strWyj = baza("Nazwisko") Response.Write Server.HTMLEncode(strWyj) & "<BR>" baza.MoveNext Wend baza.Close polaczenie.Close Set baza = Nothing Set polaczenie = Nothing %> </BODY></HTML>
Formularz <html> <head> <title>Strona Testowa</title> </head> <body> <form method="GET" action="Z2baza_insert.asp"> <p>Identyfikator:<input type="text" size="20" name="Pole1Formularza"></p> <p>Nazwisko:<input type="text" size="20" name="Pole2Formularza"> <input type="submit" name="B1" value="Wyslij"></p> </form> </body> </html>
PLIK ASP • <% @LANGUAGE = VBScript %> • <% Option Explicit • Response.Expires = 0%> • <% • Dim Conn, strSQL • response.write ("Wykonanie na serwerze") & "<BR>" • 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") & "<BR>" • %>
ZŁĄCZONE TABELE <% Dim Conn, SQL, baza, suma response.write " Wykonanie obliczeń" & "<BR>" '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")
'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 " &_ "ORDERBY Zamowienia.Id_zamowienia"
'wykonanie zapytania i wypełnienie obiektu baza baza.Open SQL, Conn , 3 , 3 'nagłówek tabeli response.write "<TABLE BORDER><TR bgcolor=#DDDDDD>" &_ "<TD><FONT size=5>Id zamowienia </FONT></TD>" &_ "<TD><FONT size=5>Nazwa </FONT></TD>" &_ "<TD><FONT size=5>Sztuk </FONT></TD>" &_ "<TD><FONT size=5>Cena </FONT></TD>" &_ "<TD><FONT size=5>Wartość </FONT></TD>" &_ "<TD><FONT size=5>Nazwisko </FONT></TD>" &_ "</TR>"
'wypisanie rekordów while not baza.EOF response.write "<TR>" &_ "<TD align=right><FONT size=5>" & baza("ID") & "</FONT></TD>" &_ "<TD> <FONT size=5>" & baza("nazwa") & "</FONT></TD>" &_ "<TD align=right><FONT size=5>" & baza("sztuk") & "</FONT></TD>" &_ "<TD align=right><FONT size=5>" & formatCurrency(baza("cena")) &_ "</FONT></TD>" & _ "<TD align=right><FONT size=5>" &_ formatCurrency(baza("cena")*baza("sztuk")) & "</FONT></TD>" &_ "<TD><FONT size=5>" & baza("nazwisko") & "</TR>" BAZA.MOVENEXT wend response.write "</table>"
'Obliczenie sumy baza.MoveFirst suma=0 while not baza.EOF suma= suma+ baza("sztuk")*baza("cena") baza.movenext wend response.write "Suma: " & FormatCurrency(suma) &"<BR>" 'zamknięcie obiektów baza.Close set baza = nothing Conn.Close set Conn = nothing response.write "<FONT color=red> Wykonano</FONT><BR>" %> </FONT>
TWORZENIE FORMULARZA Z DANYMI Z TABELI <% Dim Conn, SQL, baza, suma, miasto response.write "<FONT size=6> Wykonanie obliczeń dla klienta" & "<BR>" & "Wybierz nazwisko:" ' formularz response.write "<form method='POST' action='Obliczenia4.asp'>" 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")
'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") &_ "</option>" baza.MoveNext wend
'zamknięcie obiektów • baza.Close • set baza = nothing • Conn.Close • set Con = nothing • response.write "</select>" • response.write "<p><input type='submit' value='Oblicz' name='B1'></p></form>" • %> • </FONT> • </body> • </html>