160 likes | 362 Views
ASP BAZY. ASP – BAZY DANYCH. Połączenie z bazą danych. przez ADO (ActiveX Data Object) do: - źródła ODBC - bazy z podanie nazwy sterownika ODBC.
E N D
ASP – BAZY DANYCH Połączenie z bazą danych • przez ADO (ActiveX Data Object) do: - źródła ODBC - bazy z podanie nazwy sterownika ODBC ADO (ang. ActiveX Data Object) to interfejs wysokiego poziomu umożliwiający dostęp do baz danych poprzez OLE DB. OLE DB - interfejs programistyczny Microsoftu służący do uzyskiwania dostępu do danych (obiekt COM, funkcjonujący podobnie do ODBC), ale w odniesieniu do dowolnego źródła danych, a nie tylko baz danych SQL. Aplikacje mogą wykorzystywać OLE DB do bezpośredniego sięgania do danych lub też poprzez OLE DB mogą wywoływać ODBC, aby uzyskać dostęp do baz ODBC. <% Dim objConn Set objConn = Server.CreateObject( "ADODB.Connection" ) objConn.ConnectionString = "DRIVER={Microsoft Access Driver (*.mdb)};"_ & "DBQ=" & Server.MapPath("bank_4.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 "tabela", objConn, typ_kursora, blokowanie, typ_polecenia lub łańcuch SQL domyślne adCmdTable • przykład: objRS.Open "operacja", objConn, ,3 • zamykanie połączenia z tabelą: objRS.Close Set objRS = Nothing S. Wolek Wst. do Inf.
Dane z tabeli • wskaźnik bieżący + ruchy: MoveFirst MoveNext ( MovePrevious ) MoveLast ( Move liczba ) • funkcje: BOF EOF • dostęp do pola: objRecordSet( "nazwa_pola" ) Przykład 2: lista nazwisk i miast klientów banku: Do While not objRS.EOF ' lub while Response.Write "Nazwisko " & objRS( "nazwisko" ) & "<BR>" Response.Write "Miasto " & objRS( "miasto" ) & "<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 <form method="GET" action="ob_nazwisk.asp"> <select name="Klienci_banku"> <% Do While not objRS.EOF Response.Write "<OPTION VALUE=' " & objRS( "nr_klienta" ) & "'> " 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_banku" ) 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: <html> <head> </head> <body> <p> <% openstr = "driver={Microsoft Access Driver (*.mdb)};" & "dbq=" &Server.MapPath("firma.mdb")
polaczenie.Open openstr 'SQL sql = "SELECT * " & "FROM klienci; " Set baza = Server.CreateObject("ADODB.Recordset") baza.Open sql, polaczenie, 3, 3 'ta linia otwiera obiekt baza uaktywniając w nim polecenie SQL ' argument polaczenie - mówi że obiekt BAZA korzysta z połączenia 'zadeklarowanego w polaczenie. baza.MoveFirst Do While Not baza.EOF Response.Write baza("Identyfikator") & " " & baza("nazwisko") & "<br>" baza.MoveNext Loop
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 %> <% DIM strWyj Response.Expires = 0 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) ' Wyświetlenie 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>" %>