Autor: Sanjaya Hettihewa
T³umaczenie: Piotr Rajca
ISBN: 83-7197-104-4
Format: B5, 720 stron
Data wydania: 10/1999
Cena ksi¹¿ki: 66.00 z³
Przesy³ka gratis! Odbiorca pokrywa jedynie koszty pobrania (2,70 z³)
w przypadku przesy³ki za zaliczeniem pocztowym
Dziêki tej pozycji czytelnik w bardzo krótkim czasie nabêdzie umiejêtnoœci, które pozwol¹ rozpocz¹æ
efektywn¹ pracê z Active Server Pages 2.0. Ksi¹¿ka ukazuje funkcje i dzia³anie ASP 2.0 od podstaw a¿ do bardziej
zaawansowanych funkcji i pojêæ. Czytaj¹c tê ksi¹¿kê mo¿na zrozumieæ podstawy tworzenia dynamicznych
i interaktywnych stron internetowych, nauczyæ siê tworzenia aplikacji niezale¿ne od typu przegl¹darki internetowej,
wkorzystaæ si³ê ActiveX Data Objects (ADO) w tworzeniu internetowych aplikacji baz danych,urozmaiciæ swoje
strony internetowe przy pomocy aplikacji ASP, rozwin¹æ mo¿liwoœci ASP dziêki samodzielnemu projektowaniu
skryptów i komponentów ASP, opanowaæ bardzo wyszukane techniki interakcji z u¿ytkownikiem, wykorzystuj¹ce
formularze HTML, Javê, ActiveX, okna dialogowe i pola tekstowe
llllllllllllllllllllllllllllllllllllllllllllllllllllllllllll
Wydawnictwo Helion
ul. Chopina 6, 44-100 Gliwice, POLAND
telefon: (32) 230-98-63, 231-22-19
fax: (32) 230-98-63 w.10
mail: helion@helion.com.pl
Active Server Pages 2.0 dla ka¿dego
Active Server Pages 2.0 dla ka¿dego
Zobacz przyk³adowy rozdzia³
Spis treœci
Je¿eli znasz tê ksi¹¿kê oceñ j¹
Ksi¹¿ki i "3D" Online
Aktualny cennik ksi¹¿ek e-mailem
Zamów najnowszy katalog
Informacje o nowoœciach e-mailem
5R]G]LDä
7ZRU]HQLH
DSOLNDFMLED]GDQ\FK
SU]\X\FLX
RELHNWÑZGDQ\FK$FWLYH;
QDSLVDá'XQFDQ0DFNHQ]LH
: SRSU]HGQLP UR]G]LDOH ]RVWDáR SU]HGVWDZLRQH SRMFLH Z\NRU]\VW\ZDQLD ED] GDQ\FK
w aplika
FMDFK $63 ED]XMFH QD F]\P RNUHODQ\P MDNR $'2 $'2 $FWLYH; 'DWD
2EMHFWV±RELHNW\GDQ\FK$FWLYH;MHVW]ELRUHP]HZQWU]Q\FKRELHNWyZNWyU\PLPR*HV]
opero
ZDü]HVZRLFKVWURQGDMFLPW\PVDP\PPR*OLZRüSUDF\]ED]DPLGDnych. Po-
nie
ZD*]REDF]\áHMX*SU]\NáDGVSRVoEXX*\FLDW\FKRELHNWyZZW\PUR]G]LDOHRPy
ZLP\ND*G\]QLFK]QDF]QLHEDUG]LHMV]F]HJyáRZR:W\PUR]G]LDOH
X
Odkryjesz czym jest ADO.
X
=DSR]QDV]VL]PRGHOHPRELHNWRZ\P$'2
X
8*\MHV]$'2GRVWZRU]HQLDDSOLNDFMLIRUXPX*\WNRZQLNyZ
X
:\NRU]\VWDV]]DDZDQVRZDQHPR*OLZRFL$'2VFKHPDW\GDQ\FK
3UH]HQWDFMD$'2
$'2 MHVW JUXS RELHNWyZ ]DSURMHNWRZDQ\FK Z FHOX GRVWDUF]HQLD SURVWHJR LQWHUIHMVX
programi
VW\F]QHJR VáX*FHJR GR RSHURZDQLD QD ED]DFK GDQ\FK : SU]HV]áRFL VWZR
rzono wiele podobnych systemów takich, jak: DAO (Data Access Objects) lub RDO
&]öè,,
5HPRWH'DWD2EMHFWVNWyUHE\á\EDUG]RV]HURNRZ\NRU]\VW\ZDQHSU]H]SURJUDPLVWyZ
NRU]\VWDMF\FK ] M]\NyZ 9LVXDO %DVLF 9LVXDO & RUD] RVRE\ X*\ZDMFH SURJUDPX
0LFURVRIW$FFHVV0LFURVRIWVWZLHUG]Lá*HWHSoSU]HGQLHV\VWHP\E\á\]E\WRJUDQLF]RQH
SRG Z]JOGHP PR*OLZRFL RSHURZDQLD QD ZLHOX Uy*Q\FK W\SDFK GDQ\FK LVWQLHMF\FK
w
UHDOQ\PZLHFLH]WHJRSRZRGXSRZVWDáR2/('%2/('%PDZV]\VWNLHFHFK\
NWyU\FKEUDN'$2±MHVWV]\ENLHPDáHLHODVW\F]QH'$2MHVWLQWHUIHMVHP-HW±PHcha-
QL]PXED]GDQ\FKZ\NRU]\VW\ZDQ\PZ$FFHVVLHNWyU\QLH]RVWDá]DSURMHNWRZDQ\GR
REVáXJLLQQ\FKW\SyZGDQ\FK=GUXJLHMVWURQ\2/('%PR*HSUDFRZDü]HZV]\VWNLP
ZáF]QLH ] GDQ\PL NWyUH QLH V ]DSLVDQH Z WUDG\F\MQ\P IRUPDFLH WDEHODU\F]Q\P
:V]\VWNLH WH IDNW\ ZLDdF] R W\P *H 2/( '% MHVW DNWXDOQLH SUHIHURZDQ\P QDU]
dziem programistycznym, niestety po
VLDGD RQR MHGQ SRGVWDZRZ ZDG NWyUD XQLH
PR*OLZLáDMHJRSRZV]HFKQHZ\NRU]\VWDQLH±2/('%MHVWQLHVá\FKDQLHVNRPSOLNRZDQH
$E\SU]H]Z\FL*\üWHQSUREOHP0LFURVRIWVWZRU]\á$'2SURVWZDUVWZXPLHV]F]R
QSRQDG2/('%LGRVWDUF]DMFáDWZLHMV]HJRLQWHUIHMVXSURJUDPistycznego.
3RVLDGDMF MHG\QLH WU]\ JáyZQH RELHNW\ RUD] NLOND SRPRFQLF]\FK NROHNFML $'2 MHVW
bardzo pro
VWH']LNLWHPX$'2MHVWáDWZHZX*\FLXLQLHWUXGQRVLJRQDXF]\üMHGQR
F]HQLHPR*QDSU]\MHJRSRPRF\]URELüQLHPDO*HZV]\VWNRFRPR*QDZ\NRQDü]ED]
GDQ\FK']LNLVZRMHMSURVWHMNRQVWUXNFML$'2GRVNRQDOHQDGDMHVLGRZ\NRU]\VWDQLD
ZUD]]$63D]DWHPVWDáDVLRQDMHG\QPHWRGREVáXJLED]GDQ\FKZ\NRU]\VW\ZDQ
GR WZRU]HQLD DSOLNDFML $63 8ZD*D VL WDN*H L* $'2 MHVW OHSV]\P QDU]G]LHP GR
Z\NRU]\VWDQLD Z 9LVXDO %DVLFX RUD] LQQ\FK URGRZLVNDFK SURJUDPLVW\F]Q\FK FKRü
wy
NRU]\VW\ZDQLH$'2SR]DWHFKQRORJL$63GRSLHURWHUD]]\VNXMHVRELHSRSXODrQRü
0RGHORELHNWRZ\$'2
$'2SRVLDGDMHG\QLHV]HüRELHNWyZLGZLHNROHNFMHMHGQDNVSRUyGW\FKV]HFLXRELH
któw jedy
QLHWU]\QDOH*\X]QDü ]DRELHNW\JáyZQHNWyU\FKG]LDáDQLHEG]LHV] PXVLDá
w
SHáQL]UR]XPLHü2ELHNWDPLW\PLV
X
Connection
,
X
Command
,
X
Recordset.
.D*G\]W\FKJáyZQ\FKRELHNWyZ]RVWDQLHZ\MDQLRQ\ZGDOV]\FKF]FLDFKWHJRUR]
G]LDáXJG]LH]RVWDQSRGDQHOLVW\ZV]\VWNLFKLFKZáDFLZRFLLPHWRG3U]\NáDG\Z\NR
U]\VWDQLDW\FKRELHNWyZ]RVWDQSRGDQHZGDOV]HMF]FLUR]G]LDáXMDNRF]üV\VWHPX
)RUXP8*\WNRZQLNyZ=REDF]\V]MHWDN*HZQDVWSQ\PUR]G]LDOH
2ELHNW&RQQHFWLRQ
=JRGQLH ] W\P F]HJR GRZLHG]LDáH VL Z SRSU]HGQLP UR]G]LDOH ND*GH Z\NRU]\VWDQLH
bazy danych wymaga obiektu
Connection
5HSUH]HQWXMHRQU]HF]\ZLVWVHVMQDZL
]DQ]ED]GDQ\FK=D]Z\F]DMMHG\Q\PLPHWRGDPLWHJRRELHNWXZ\NRU]\VW\ZDQ\PL
Z VNU\SWDFK $63 V PHWRG\
Open()
i
Close()
. Listing 11.1 przedstawia, w jaki
VSRVyEPR*QDZ\NRU]\VWDüRELHNW
Connection
.
5R]G]LDä
♦
7ZRU]HQLHDSOLNDFMLED]GDQ\FKSU]\X\FLXRELHNWÑZGDQ\FK$FWLYH;
/LVWLQJWykorzystanie obiektu Connection
1.
2.
<%
3.
Dim Conn 'Nasz obiekt Connection
4.
5.
Set Conn = Server.CreateObject( "ADODB.Connection" )
6.
7.
Conn.Open "DSN=WEBSQL;UID=sa;pwd=;"
8.
9.
' Tu przychodzi inny kod
10.
11.
Conn.Close
12.
%>
: SU]HGVWDZLRQ\P SRZ\*HM NRG]LH Z NLONX NURNDFK MHVW WZRU]RQ\ Z\NRU]\VW\ZDQ\
i zamykany obiekt
Connection
. W linii 3. jest deklarowana zmienna
Conn
, w której
zostanie zapisany obiekt
Connection
. Takie deklarowanie zmiennej nie jest konie-
F]QH OHF] XZD*D VL MH ]D OHSV] SUDNW\N SURJUDPLVW\F]Q : OLQLL SU]\ X*\FLX
metody
Server.CreateObject
jest tworzony faktyczny egzemplarz obiektu
Con
-
nection
&]\QQRüWDPXVL]RVWDüZ\NRQDQDSU]HGZ\ZRáDQLHPMDNLHMNROZLHNPHWRdy
OXEZáDFLZRFLRELHNWX3RVWZRU]HQLXRELHNWXZOLQLLMHVWRWZLHUDQDVHVMD]ED]
GDQ\FK D MDNR SDUDPHWU Z\ZRáDQLD PHWRG\ 2SHQ MHVW X*\ZDQ\ áDFXFK ]QDNyZ
SRáF]HQLD]H(UyGáHPGDQ\FK7HQáDFXFK]QDNyZVNáDGDVL]WU]HFKRGG]LHOQ\FKLn-
IRUPDFML±QD]Z\'61LGHQW\ILNDWRUDX*\WNRZQLNDRUD]KDVáD:V]\VWNLHWHLQIRUPDFMH
PR*QDSRGDüRGG]LHOQLHMDNSoND]DQRQDSRQL*V]\PSU]\NáDG]LH
Conn.Open "WEBSQL", "sa", ""
'RZROQ\NRGRSHUXMF\QDSRáF]HQLXSRZLQLHQ]RVWDüXPLHV]F]RQ\SRPLG]\OLQL
i
OLQL
Obiekt Connection posiada siedem metod przedstawionych w tabeli 11.1.
7DEHOD
Metody obiektu Connection
0HWRGD
2SLV
Open
7ZRU]\VHVM]ED]GDQ\FK-HVWWR]D]Z\F]DMSLHUZV]DLQLHZWSOLZLH
naj
ZD*QLHMV]DZ\ZRáywana metoda.
Close
=DP\NDVHVMMHOLVHVMDMHVWRWZDUWD-HOLQLHPDRWZDUWHMVHVMLWRPHWRGD]ZUDFD
EáG
Execute
:\NRQXMHSROHFHQLH64/ZED]LHGDQ\FK0HWRGDWDMHVWX*\WHF]QDSU]\
Z\NRQ\ZDQLXF]\QQRFLNWyUHQLH]ZUDFDMZZ\QLNXUHNRUGyZGDQ\FKWDNLFKMDN
XVXQLFLHQLHNWyU\FKUHNRUGyZWDEOLF\
BaginTrans
5R]SRF]\QDWUDQVDNFM]ED]GDQ\FK:LFHMLQIRUPDFMLQDWHPDWWUDQVDNFML
i
VSRVREyZLFKX*\ZDQLD]QDMG]LHV]ZUR]G]LDOHSWÄ8*\ZDQLHNRPSonentów
ActiveX stworzonych dla ASP”.
&]öè,,
7DEHOD
Metody obiektu
&RQQHFWLRQ±FLJGDOV]\
0HWRGD
2SLV
CommitTrans
-HGQD]GZyFKPHWRGD]DNRF]HQLDWUDQVDNFML]ED]GDQ\FKWDPHWRGDLQIRUPXMH
ED]RW\P*HFDáDRSHUDFMD]RVWDáD]DNRF]RQDSRP\OQLHDZV]\VWNLH
PRG\ILNDFMHGDQ\FKSRZLQQ\]RVWDü]DVWRVRZDQH
RollbackTrans
,QQDPHWRGD]DNRF]HQLDWUDQVDNFMLLQIRUPXMHRQDED]GDQ\FKRZ\VWSLeniu
EáGyZLR]QDF]D*HZV]\VWNLHRSHUDFMHZ\NRQDQHQDED]LHRGPomentu
Z\ZRáDQLDPHWRG\
BeginTrans
SRZLQQH]RVWDüZ\FRIDQH
OpenSchema
Ta zaawansowana metoda jest wykorzystywana raczej rzadko. Zwraca ona zbiór
UHNRUGyZNWyUHJR]DZDUWRü]DOH*\RGSLHUZV]HJRDUJXPHQWXZ\ZoáDQLDPHWRG\
3HáQDOLVWDDUJXPHQWyZPHWRG\RUD]RGSRZLDGDMF\FKLPZDUWRFLQLHPRJáD]RVWDü
SU]HGVWDZLRQDMHGQDNSU]\NáDGMHMZ\NRU]\VWDQLD]RVWDáSRGDQ\ZVHNFMLÄ3UDFD]H
VFKHPDWDPLED]GDQ\FK´]QDMGXMFHMVLZGDOV]HMF]FLWHJRUR]G]LDáX
Obiekt
Connection
SRVLDGD WDN*H G]LHZLü ZáDFLZRFL WH QDMEDUG]LHM SRSXODUQH
i
X*\WHF]QH]RVWDá\SU]HGVWDZLRQHZWDEHOL
7DEHOD
3RSXODUQHLSU]\GDWQHZáDFLZRFLRELHNWXConnection
:äDFLZRè
2SLV
ConnectionString
7DZDUWRü]DZLHUDLQIRUPDFMHSRWU]HEQHGRVWZRU]HQLDVHVML]ED]GDQ\FK
PR*HRQD]RVWDüSU]HND]DQDEH]SRUHGQLRGRZ\ZRáDQLDPetody
Open
LWDNVL]D]Z\F]DMG]LHMH
ConnectionTimeout
2NUHODMDNGáXJRPHWRGD
Open
EG]LHRF]HNLZDáDQDRWU]\PDQLHGDQ\FK
]DQLP]JáRVLEáG
CommandTimeout
7DZDUWRüMHVWX*\ZDQDGRRNUHOHQLDMDNGáXJRSROHFHQLHZ\GDQHVHVML
z
ED]GDQ\FKEG]LHZ\NRQ\ZDQH]DQLP]RVWDQLHZ\JHQHURZaQ\EáG
przekroczenia limitu czasu.
State
7DZáDFLZRü]ZUDFDMHGQ]GZyFKZDUWRFLRNUHODMFF]\SRáczenie
z
ED]GDQ\FKMHVWRWZDUWH
1
F]\WH*]DPNQLWH
0
).
Attributes
:áDFLZRü]DDZDQVRZDQD]ZUDFDQDSU]H]QLZDUWRüRNUHODPR*OLZRFL
XGRVWSQLDQHSU]H]ED]GDQ\FKMDNQDSU]\NáDGREVáXJWUDQVDNFML1LHMHVW
ona wymagana przy tworzeniu prostych systemów.
=D SRPRF RELHNWX
Connection
PR*QD WDN*H X]\VNDü GRVWS GR GZyFK NROHNFML
przedstawionych w tabeli 11.3.
Obiekt
Connection
MHVWWZRU]RQ\LRWZLHUDQ\QDVDP\PSRF]WNXSUDF\]ED]GDnych,
MHGQDNSU]HZD*QLHQLHMHVWRQX*\ZDQ\ZSRMHG\QN'RIDNW\F]QHJRPDQLpulowania
ED] GDQ\FK MHVW Z\NRU]\VW\ZDQ\ SU]HZD*QLH SU]\QDMPQLHM MHGHQ ] SU]HGVWDZLRQ\FK
SRQL*HMRELHNWyZ2ELHNW&RPPDQGZ\NRU]\VWXMHRELHNW
Connection
SRSU]H]VZRM
ZáDFLZRüRQD]ZLH
ActiveConnection
.
5R]G]LDä
♦
7ZRU]HQLHDSOLNDFMLED]GDQ\FKSU]\X\FLXRELHNWÑZGDQ\FK$FWLYH;
7DEHOD
Kolekcje obiektu Connection
.ROHNFMD
2SLV
Errors
Jest to kolekcja obiektów
Error
]NWyU\FKND*G\RGSRZLDGDMHGQHPXEádowi
Z\JHQHURZDQHPXZF]DVLHWUZDQLDWHMVHVML]ED]GDQ\FK
Properties
7NROHNFMSRVLDGDND*G\RELHNW$'2XGRVWSQLDRQDSRGSRVWDFLNROHNFML
ZV]\VWNLHZáDFLZRFLRELHNWXSU]HGVWDZLRQHZWDEHOL
2ELHNW&RPPDQG
Obiekt
Command
UHSUH]HQWXMHMHGQRSROHFHQLHZ\GDQHSRáF]HQLX]ED]GDQ\FKWDNLH
jak pole
FHQLH64/OXESURFHGXUDRVDG]RQDDQJVWRUHGSURFHGXUH2ELHNW]RVWDá]Dpro-
jektowany do lep
V]HMREVáXJLZ\NRQ\ZDQLDSROHFHWHJRW\SXQL*XPR*OLZLDWRPHWRGD
Execute
obiektu
Connection
. Obiekt
Command
SRVLDGD JUXS ZáDFLZRFL PHWRG
i ko
OHNFMLNWyUH]RVWDá\SU]Hdstawione w tabelach 11.4, 11.5 i 11.6.
7DEHOD
:áDFLZRFLRELHNWXCommand
:äDFLZRè
2SLV
ActiveConnection
.D*G\RELHNW
Command
SUDFXMHQDVNRMDU]RQ\P]QLPSRáF]HQLX]ED]
GDQ\FK7DZáDFLZRüSRELHUDOXEXVWDZLDRELHNW
Connection
wykorzystywany przez polecenie.
CommandText
7DZáDFLZRüSU]HFKRZXMHSROHFHQLH64/OXESURFHGXURVDG]RQNWyUDPD
]RVWDüZ\NRQDQDSU]H]SROHFHQLH
CommandTimeout
7DZáDFLZRüPDWDNLHVDPRSU]H]QDF]HQLHFRDQDORJLF]QDZáDFiZRüRELHNWX
Connection
.
CommandType
7DZDUWRüLQIRUPXMH(UyGáRGDQ\FKRQDWXU]HWHNVWXSROHFHQLDMDNL]RVWDáPX
SU]HND]DQ\:áDFLZRüPR*HSRVLDGDüMHGQ]ZLHOXUy*Q\FKZDUWRFLMHGQDN
QDMF]FLHMVSRW\NDQHV
Text
(
1
) (tekst) oraz
Stored Procedure
(
4
)
(procedura osadzona).
Prepared
:áDFLZRüNRQWUROXMHF]\SU]HGZ\NRQDQLHPSROHFHQLD]RVWDQLHVWZRU]RQD
jego skompilowana wersja.
7DEHOD
Metody obiektu Command
0HWRGD
2SLV
CreateParameter
.D*G\RELHNW
Command
SRVLDGDNROHNFMRELHNWyZ
Parameter
. Ta metoda
VáX*\GRGRGDQLDQRZHJRRELHNWXGRWHMNROHNFML:LFHMLQIRrmacji na ten temat
]QDMG]LHV]ZWDEHOLJG]LH]RVWDáDSU]HGVWDZLRQDNROHNFMD
Parameters
.
Execute
Podstawowa metoda obiektu
Command
. Powoduje ona wykonanie polecenia
w
RSDUFLXRGRVWDUF]\FLHODLQIRUPDFML0HWRGDWDPR*H]ZUyFLüRELHNWW\SX
Recordset
.
&]öè,,
7DEHOD
Kolekcje obiektu Command
Kolekcja
Opis
Properties
-DNZND*G\PRELHNFLH$'2WDN*HLWXWDMNROHNFMD
Properties
zawiera
ZV]\VWNLHZáDFLZRFLRELHNWXRUD]RGSRZLDGDMFHLPZDUWoFL
Parameters
Jest to kolekcja obiektów
Parameter
2GSRZLDGDMRQHSDUDPHWURP
LVWQLHMF\PZSROHFHQLX64/EG(ZSURFHGXU]HRVDG]RQHMUHSUH]HQWowanej
przez dany obiekt
Command
.
2JyOQLHU]HF]ELRUFRELHNW
Command
X*\ZDQ\MHVWGRZ\NRQ\ZDQLD EDUG]LHM]áR*R
nych opera
FMLQDED]DFKGDQ\FKSURVWH]DS\WDQLDRUD]RSHUDFMHQDUHNRUGDFKV]Dzwy-
F]DMUHDOL]RZDQHSU]\X*\FLXRSLVDQHJRZQDVWSQHMVHNFMLRELHNWX
Recordset
.
2ELHNW5HFRUGVHW
.D*GDJUXSDUHNRUGyZ±QLH]DOH*QLHRGWHJRF]\MHVWRQDZ\QLNLHPZ\NRQDQLD]DS\ta-
QLDF]\WH*VWDQRZLFDá]DZDUWRüWDEHOL±MHVWUHSUH]HQWRZDQDSU]H]RELHNW
Record
-
set
7HJRRELHNWXEG]LHV]X*\ZDáQLHPDOGRZV]\VWNLFKRSHUDFMLQDED]DFKGDQ\FK
MHVWWRWDN*HQDMEDUG]LHM]áR*RQ\RELHNW$'2-HGQDNZZLNV]RFLZ\SDGNyZMHVWRQ
wykorzystywany w bardzo prosty sposób. Listing 11.2 demonstruje popularne wykorzy-
stanie obiektu
Recordset
±SRELHUDQLHLZ\ZLetlanie wyników zapytania.
/LVWLQJStosowane zbiorów rekordów i obiektu Recordset
1.
<%
2.
Dim Conn
3.
Dim RSAutorzy
4.
Dim SQL
5.
6.
Set Conn = Server.CreateObject( "ADODB.Connection" )
7.
Set RSAutorzy = Server.CreateObject( "ADODB.Recordset" )
8.
Conn.Open "WEBSQL;UID=sa;PWD=;"
9.
SQL = "SELECT * FROM Autorzy"
10.
RSAutorzy.Open SQL, Conn
11.
12.
Do While Not RSAutorzy.EOF
13.
Response.Write "<P>" & RSAutorzy("Au_Imie") & "</P>"
14.
Response.Write vbcrlf
15.
RSAutorzy.MoveNext
16.
Loop
17.
18.
RSAutorzy.Close
19.
Conn.Close
20.
%>
: SU]HGVWDZLRQ\P SRZ\*HM IUDJPHQFLH NRGX Z OLQLDFK ± GHILQLRZDQH V Z\
NRU]\VW\ZDQH ]PLHQQH -HV]F]H UD] SRZWyU] *H QLH MHVW WR NRQLHF]QH OHF] VWDQRZL
dobry zwyczaj programistyczny. W linii 6. jest tworzony egzemplarz obiektu
Conne
-
ction
, a w linii 7. egzemplarz obiektu
Recordset
REDWHRELHNW\EGZ\NRrzysty-
5R]G]LDä
♦
7ZRU]HQLHDSOLNDFMLED]GDQ\FKSU]\X\FLXRELHNWÑZGDQ\FK$FWLYH;
ZDQHZGDOV]HMF]FLNRGX1DVWSQLHZOLQLLMHVWRWZLHUDQ\RELHNW
Connection
,
NWyU\ EG]LH SRWU]HEQ\ GR RWZDUFLD RELHNWX
Recordset
. W linii 9. polecenie SQL
]RVWDMH]DSLVDQHZ]PLHQQHMNWyUDMHVWQDVWSQLHX*\WDZOLQLLZZ\ZRáDQLXPH
tody
Open
: Z\ZRáDQLX WHM PHWRG\ V SRGDZDQH GZD DUJXPHQW\ ± SROHFHQLH 64/
oraz obiekt
Connection
. Po otworzeniu zbioru rekordów, w liniach 12. – 16. jest
przedstawiony najbardziej popularny sposób operowania na nim. Do przetworzenia
FDáHM]aZDUWRFL]ELRUXUHNRUGyZZ\VWDUF]\MHGQDSURVWDSWOD:W\PZ\SDGNXZOLQLL
XPLHV]F]RQ\ ]RVWDá ZDUXQHN SWOL ±
RSAutorzy.EOF
± ZDUWRü WHM ZáDFLZRFL
SU]\MPLHZDUWRü
TRUE
(prawda) gdy zostanie pobrany ostatni rekord zbioru rekordów.
/LQLHLWZRU]OLQLNRGX+70/]DZLHUDMFZDUWRüSROD
Au_Imie
zbioru re-
NRUGyZ 1D VDP\P NRFX ]QDMGXMH VL QLeVá\FKDQLH ZD*QD OLQLD ±
RSAuto
-
rzy.MoveNext
±NWyUDSU]HVXZDZVND(QLNUHNRUGyZQDNROHjny rekord, zapobiegaMF
W\PVDP\PSRZVWDQLXQLHVNRF]RQHMSWOL
2SUyF] NLONX SURVW\FK ZáDFLZRFL L PHWRG SU]HGVWDZLRQ\FK Z SRZ\*V]\P SU]\NáD
dzie, obiekt
Recordset
]DZLHUDZLHOHLQQ\FKX*\WHF]Q\FKZáDFLZRFLLPHWRGR któ-
U\FKSRZLQLHQHZLeG]LHü0HWRG\ZáDFLZRFLLNROHNFMHRELHNWX
Recordset
zosta
á\
przedstawione w tabelach 11.7, 11.8 oraz 11.9.
7DEHOD
Metody obiektu Recordset
0HWRGD
2SLV
Open
-HVWWRPHWRGDNWyU]D]Z\F]DMEG]LHV]Z\ZRá\ZDáZSLHUZV]HMNROHjQRFL
SR]ZDODRQDQD]DLQLFMDOL]RZDQLHRELHNWXLZ\SHáQLHQLHJRSRV]ukiwanymi
ZDUWRFLDPL0R*HV]SRGDüRELHNW
Connection
, który b
dzie
Z\NRU]\VW\ZDQ\]W\P]ELRUHPUHNRUGyZOXESDUDPHWU\SRáF]eQLD-HOLQLH
SRGDV]RELHNWX&RQQHFWLRQWRGODND*GHJRQRZRRWZRU]onego zbioru rekordów
EG]LHWZRU]RQHQRZHSRáF]HQLH
Close
-HVWWRPHWRGDNWyU]D]Z\F]DMEG]LHV]Z\ZRá\ZDáQDVDP\PNRFXQLV]F]\
ona wszystkie dane przechowywane w obiekcie i pozwala na ponowne
Z\ZRáDQLHPHWRG\
Open
.
AddNew
Tworzy nowy, pusty rekord.
Update
=DSLVXMHZED]LHGDQ\FK]PLDQ\MDNLHZSURZDG]LáHZDNWXDOQ\PUekordzie.
CancelUpdate
8VXZD]PLDQ\MDNLH]RVWDá\ZSURZDG]RQHZDNWXDOQ\PUHNRUG]LHMH OLQLH
]RVWDáDZF]HQLHMZ\ZRáDQDPHWRGD
Update
.
UpdateBatch
1LHNWyU]\GRVWDUF]\FLHOHGDQ\FKSR]ZDODMQDZ\NRU]\VWDQLH]ELRUyZUHNRUGyZ
Z\NRQXMF\FKZLHOHRSHUDFMLDNWXDOL]DFMLZW\PVDP\PF]aVLH]DSLVXMF
poszczególne modyfikacje dokonane do momentu wywo
áDQLDWHMPHWRG\
CancelBatch
8VXZDRF]HNXMFHQDREVáXJZVDGRZH]DGDQLDDNWXDOL]DFML'RP\OQLHV
XVXZDQHZV]\VWNLHRF]HNXMFH]DGDQLDDNWXDOL]DFMLMHGQDNPR*HV]SRGDü
argument, który ograniczy usuwanie do aktualnego rekordu lub rekordów
zgodnych z podanym filtrem.
&]öè,,
7DEHOD
Metody obiektu
5HFRUGVHW±FLJGDOV]\
0HWRGD
2SLV
Move
7DPHWRGDSR]ZDODQDSU]HVXQLFLHVLRRNUHORQLORüUHNRUGyZGRSU]RGX
OXEGRW\áXZ]ELRU]HUHNRUGyZ3U]HVXQLFLHPR*HRGE\ZDüVLZ]JOGHP
DNWXDOQHJRUHNRUGXMHOLQLH]RVWDQLHSRGDQ\GUXJLSDUDPHWUZ\ZRáDQLD
PHWRG\OXEZ]JOGHPGRZROQHJRLQQHJRUHNRUGX]ELRUXUHNRUGyZ
MoveNext
0HWRGDSRZRGXMHSU]HMFLHGRNROHMQHJRUHNRUGXZ]ELRU]HUHNRUGyZ
W
PRPHQFLHJG\Z\ZRáDV]WPHWRG]QDMGXMFVLSR]DRVWDWQLPUHNRUGHP
]ELRUXJG\ZDUWRüZáDFLZRFL
EOF
wynosi
true
), jest genero
ZDQ\EáG
MovePrevious
3U]HFLZLHVWZRPHWRG\
MoveNext
SRZRGXMHSU]HMFLHGRUHNRUGX
SRSU]HG]DMFHJRDNWXDOQ\UHNRUG-HOLDNWXDOQ\PUHNRUGHPMHVWSLHUwszy
UHNRUG]ELRUXJG\ZDUWRüZáDFLZRFL
BOF
wynosi
true
), generowany jest
EáG
MoveLast
7DPHWRGDSRZRGXMHSU]HMFLHGRRVWDWQLHJRUHNRUGX]ELRUX-HOLDNWualnym
UHNRUGHPMHVWZáDQLHRVWDWQLUHNRUG]ELRUXWRZ\NRQDQLHWHMPHWRG\QLHGDMH
*DGQHJRUH]XOWDWX
MoveFirst
Jest to metoda podobna do metody
MoveLast
SRZRGXMHRQDSU]HMFLHGR
SLHUZV]HJRUHNRUGX]ELRUXMHGQDNQLHGDMH*DGQ\FKHIHNWyZMHOLDNWXDOQ\P
rekordem jest pierwszy rekord zbioru.
NextRecordset
0R*OLZHMHVWZ\GDQLHSROHFHQLDNWyUHEG]LH]ZUDFDáRZLFHMQL*MHGHQ]ELyU
UHNRUGyZ0R*HVLWR]GDU]\üSU]\Z\ZRá\ZDQLXSURFHGXURVadzonych lub
SU]\NRU]\VWDQLX]H]áR*RQ\FKSROHFH64/WDNLFKMDNWRSU]HGVWDZLRQH
SRQL*HM
SELECT ID FROM Goscie; SELECT * FROM KartaZakupowa
7DPHWRGDSRZRGXMHZ\NRQDQLHQDVWSQHJRSROHFHQLDZJUXSLHL]ZUDFDMHJR
wyniki.
Save
7DPHWRGDSRELHUDMDNRDUJXPHQWQD]ZSOLNXDQDVWSQLH]DSLVXMHZQLP
DNWXDOQ\]ELyUUHNRUGyZ5HNRUG\WHPRJ]RVWDü]DáDGRZDQHZSU]\V]áRFL
SRSU]H]Z\ZRáDQLHPHWRG\
Open
LSRGDQLHSOLNXMDNR(UóGáDGDQ\FK
Requery
7DPHWRGDMHVWHNZLZDOHQWHP]DPNQLFLDLSRQRZQHJRRWZRU]HQLD]ELoru
UHNRUGyZ±SRZRGXMHRQDSRQRZQHZ\NRQDQLHSROHFHQLD-HOLDNWualnie
SRGDQHNU\WHULDVSHáQLDMZLFHMUHNRUGyZQL*SRSU]HGQLRWRQRZHUHNRUG\
WDN*HEGGRVWSQHZ]ELRU]H
Resync
1LHQDOH*\P\OLüWHMPHWRG\]PHWRG
Requery
. Ta metoda jedynie porównuje
GDQH]QDMGXMFHVLZUHNRUGDFK]GDQ\PLSU]HFKRZ\ZDQ\PLQDVHUZHU]H
i
XDNWXDOQLDZDUWRFLZ]ELRU]HUHNRUGyZ$UJXPHQWRSFMonalny pozwala na
V\QFKURQL]DFMZ\áF]QLHDNWXDOQHJRUHNRUGXOXEUHNRUGyZVSHáQLDMF\FK
podane kryteria.
Delete
Ta metoda usuwa aktualny rekord.
GetRows
7DPHWRGD]ZUDFDGZXZ\PLDURZWDEOLFZDUWRFLW\SXYDULDQW]DZLeUDMF
SDU\SROHZDUWRü'RGDWNRZHDUJXPHQW\SR]ZDODMQDRNUHOHQLHLOHUHNRUGyZ
PD]RVWDüSREUDQ\FKZWDNLVSRVyERUD]RGNWyUHJRUHNRrGXQDOH*\UR]SRF]ü
SRELHUDQLH'RP\OQLHVSRELHUDQHZV]\VWNLHUekordy z aktualnego zbioru.
5R]G]LDä
♦
7ZRU]HQLHDSOLNDFMLED]GDQ\FKSU]\X\FLXRELHNWÑZGDQ\FK$FWLYH;
7DEHOD
Metody obiektu
5HFRUGVHW±FLJGDOV]\
0HWRGD
2SLV
Clone
7DPHWRGDWZRU]\]ELyUUHNRUGyZ]DZLHUDMF\NRSLDNWXDOQ\FKGDQ\FK
Supports
7DPHWRGDSR]ZDOD&LQDRNUHOHQLHMDNLHPR*OLZRFLIXQNFMRQDOQHV
XGRVWSQLDQHSU]H]]ELyUUHNRUGyZFKRG]LWXRPR*OLZRFLWDNLHMDN
dodawanie nowego rekordu, przechodzenie do poprzedniego rekordu, itp.
7DEHOD
:áDFLZRFLRELHNWXRecordset
:äDFLZRè
2SLV
EOF
.RQLHFSOLNXSR]ZDODQDRNUHOHQLHF]\DNWXDOQ\UHNRUG]QDMGXMHVLSR]D
RVWDWQLPUHNRUGHP]ELRUXUHNRUGyZ7DZáDFLZRüMHVWSowszechnie
VWRVRZDQDGRRNUHOHQLDNLHG\QDOH*\]DNRF]\üSWOREVáXJXMFUHNRUG\
zbioru rekordów.
BOF
3RF]WHNSOLNXZáDFLZRüSRGREQDGR(2)]ZUDFDMHGQDNZDUWRü
true
,
MHOLDNWXDOQ\UHNRUG]QDMGXMHVLSU]HGSLHUZV]\PUHNRUGHP]ELRUX-HOLRELH
ZáDFLZRFL±
EOF
i
BOF
±PDMZDUWRü
true
, to ozna
F]DWR*H]ELyU
rekordów jest pusty.
MaxRecords
7DZáDFLZRüNRQWUROXMHLOHUHNRUGyZMHVW]ZUDFDQ\FKMDNRZ\QLN
]DS\WDQLD-HMZDUWRüPR*QDRNUHOLüZ\áF]QLHSU]HGZ\ZRáDQLHPPHWRG\
Open
NLHG\]ELyUUHNRUGyZMHVW]DPNQLW\
AbsolutePosition
7ZáDFLZRüPR*QDZ\NRU]\VWDüGRRNUHOHQLDSR]\FMLDNWXDOQHJRUHNRUGX
Z]JOGHPSRF]WNXSOLNX
PageSize
7DZáDFLZRüZVSyáSUDFXMH]ZáDFLZRFLDPL
AbsolutePage
oraz
PageCount
LZUD]]QLPLXPR*OLZLDSRG]LHOHQLH]ELRUXUHNRUGyZQD
ORJLF]QHVWURQ\7DZáDFLZRü]ZUDFDEG(XVWDZLDLORüUHNRUGyZ
PLHV]F]F\FKVLZMHGQHMORJLF]QHMVWURQLH
PageCount
7DZáDFLZRü]ZUDFDLORüORJLF]Q\FKVWURQZ]ELRU]HUHNRUGyZ-HVWRQD
SU]H]QDF]RQDW\ONRGRRGF]\WXOHF]MHMZDUWRü]PLHQLDVLZUD]]H]PLDQ
ZDUWRFLZáDFLZRFL
PageSize
.
AbsolutePage
7DZáDFLZRüRNUHODORJLF]QVWURQQDNWyUHM]QDMGXMHVLDNWXDOQ\UHNRUG
:áDFLZRüWPR*QDXVWDZLüFRSRZRGXMHSU]HQLHVLHQLHDktualnego rekordu
QDSR]\FMSLHUZV]HJRUHNRUGXSRGDQHMVWURQ\
CursorType
7DZáDFLZRü]ZUDFDMHGQ]NLONXZDUWRFL
Forward Only
(
0
),
Keyset
(
1
),
Dynamic
(
2
EG(
Static
(
3
-HMZDUWRüPR*QDRNUHOLüZ\áF]QLH
ZPRPHQFLHJG\]ELyUUHNRUGyZMHVW]DPNQLW\DVáX*\RQDGRRNUHODQLD
VSRVREXZMDNL]ELyUUHNRUGyZPD]RVWDüRWZRU]RQ\-HMZDUWRüPR*QD
WDN*HSRGDüMDNRDUJXPHQWZ\ZRáDQLDPHWRG\
Open
2SLVND*GHJRW\SX
NXUVRUDRUD]MHJR]QDF]HQLH]RVWDáRZ\MDQLRQHZGDOV]HMF]FLUR]G]LDáX
&]öè,,
7DEHOD
:áDFLZRFLRELHNWX5HFRUGVHW±FLJGDOV]\
:äDFLZRè
2SLV
CacheSize
7DZáDFLZRüRNUHODLORüUHNRUGyZNWyUDMHVWMHGQRUD]RZRSRELHUana od
GRVWDUF]\FLHODGDQ\FK-HMGRP\OQDZDUWRüZ\QRVL
1
, co ozna
F]D*HW\ONR
DNWXDOQ\UHNRUGMHVWSU]HFKRZ\ZDQ\ZSDPLFLSRGUFzQHM-HOLZDUWRü
ZáDFLZRFLEG]LHZ\*V]DWRUHNRUG\SU]HFKRZyZDQHZSDPLFLSRGUF]QHM
QLHNRQLHF]QLHPXV]RGSRZLDGDüU]HF]ywistym danym przechowywanym
w
ED]LHPR*QDMHMHGQDNRGZLH*\ü]DSRPRFPHWRG\
Resync
.
Recordcount
7DZáDFLZRüMHVWSRZV]HFKQLHZ\NRU]\VW\ZDQDMHGQDNQLH]DZV]HMHM
ZDUWRüMHVWSRSUDZQDOXEZRJyOHGRVWSQD-HOL]ELyUUHNRUGyZÄQLHZLH´
LOHUHNRUGyZZQLP]QDMGXMHVLOXEQLHMHVWZVWDQLHRNUeOLüLFKLORFLWR
ZDUWRüWHMZáDFLZRFLZ\QRVL
–1
2JyOQLHU]HF]ELRUFZDUWRFLWHM
ZáDFLZRFLQLHPR*QDX]QDü]DSHZQD*GRPRPHQWXJG\]RVWDQLH
odwiedzony ostatni rekord zbioru (
MoveLast
).
Source
7DZáDFLZRü]DZLHUDWHNVWSROHFHQLD64/MDNLHPD]RVWDüZ\NRQDQHOXE
QD]ZSURFHGXU\RVDG]RQHMMHMZDUWRüPR*QDSRGDüEH]SRUHdnio przed
RWZRU]HQLHP]ELRUXUHNRUGyZOXEMDNRDUJXPHQWZ\ZRáDQLDPHWRG\
Open
.
EditMode
2NUHODVWDQDNWXDOQHJRUHNRUGXLPR*HSU]\MPRZDüMHGQ]QDVWSXMcych
ZDUWRFL
None
(
0
) (brak),
Edit In Progress
(
1
) (edycja w toku),
Add
In Progress
(
2
GRGDZDQLHZWRNXEG(
Deleted
(
3
XVXQLW\
ActiveConnection
7DZáDFLZRüVáX*\RG]ZUDFDQLDOXEXVWDZLDQLDRELHNWX
Connection
wykorzystywanego przez aktualny zbiór rekordów.
LockType
2NUHODMDNLURG]DMEORNRZDQLD]RVWDáQDU]XFRQ\QDDNWXDOQLHHG\Wowany
UHNRUG:DUWRüPR*HSRVLDGDüMHGQ]QDVWSXMF\FKZDUWRFL
Read-Only
(
1
) (tylko do odczytu),
Pessimistic
(
2
) (pesymistyczna),
Optimistic
(
3
) (optymistyczna),
Batch Optimistic
(
4
) (wsadowa optymistyczna).
Znaczenia poszczególnych typów blo
NDG]RVWDá\SRGDQHZGDOV]HMF]FL
UR]G]LDáX
Bookmark
-HOL]ELyUUHNRUGyZXPR*OLZLDZ\NRU]\VW\ZDQLH]DNáDGHNFRPR*HV]
VSUDZG]Lü]DSRPRFPHWRG\
Supports
WREG]LHV]PyJá]DSLVDüZDUWRü
WHMZáDFLZRFLZ]PLHQQHM:SU]\V]áRFLEG]LHV]PyJáZUyFLü
EH]SRUHGQLRGRWHJRVDPHJRUHNRUGXSU]\SLVXMFWHMZáDFiZRFLZDUWRü
]DSLVDQZ]PLHQQHM:DUWRüZáDFLZRFLMHVWXQLNDOQDGODGDQHJR]ELRUX
UHNRUGyZ'ZDLGHQW\F]QHUHNRUG\ZUy*Q\FK]ELoUDFKQLHPRJPLHüWHM
VDPHMZDUWRFLZáDFLZRFL
Bookmark
, jednak wszystkie rekordy obiektu
Recordset
VWZRU]RQHJR]DSRPRFPetody
Clone
EGPLDá\WDNVDP
ZDUWRüWHMZáDFLZRFLMDNLFKRU\JLQDá\
Filter
7DZáDFLZRüRNUHODZDUXQHNMDNLEG]LHVSUDZG]DQ\GODZV]\Vtkich
UHNRUGyZDNWXDOQLH]QDMGXMF\FKVLZ]ELRU]H:VNáDG]ELRUXUHNRUGyZ
ZHMGW\ONRWHUHNRUG\NWyUHVSHáQLSRGDQHNU\WHULD.U\WeULDWHPRJ
SU]\ELHUDüSRVWDüQD]ZD3ROD ZDUWRü, np.:
("IDGoscia = 123")
.
Status
=ZUDFDDNWXDOQ\VWDQUHNRUGX]XZ]JOGQLHQLHPZV]HONLFKSURFHGXU
masowych oraz procedur osadzonych.
5R]G]LDä
♦
7ZRU]HQLHDSOLNDFMLED]GDQ\FKSU]\X\FLXRELHNWÑZGDQ\FK$FWLYH;
7DEHOD
:áDFLZRFLRELHNWX5HFRUGVHW±FLJGDOV]\
:äDFLZRè
2SLV
CursorLocation
7DZDUWRüQLHPD]DVWRVRZDQLDZ$63JG\*RNUHODRQDF]\NXUVRU]RVWDá
VWZRU]RQ\QDVHUZHU]HF]\WH*QDNRPSXWHU]HX*\WNRZQLND3U]\
wykorzystaniu ADO w ASP kursor zawsze jest tworzony na serwerze.
MarshalOptions
3RGREQLHMDNZSU]\SDGNXZáDFLZRFL&XUVRU/RFDWLRQWDN*HLWDZáDFLZRü
PDZSá\ZQDVSRVyEZMDNL]ELyUUHNRUGyZMHVWSU]HQoV]RQ\SRPLG]\
VHUZHUHPDNRPSXWHUHPX*\WNRZQLND:SU]\SDGNX$63QLHMHVWRQD
wykorzystywana.
7DEHOD
Kolekcje obiektu Recordset
.ROHNFMD
2SLV
Properties
-DNZND*G\PRELHNFLH$'2WDN*HLWXWDMNROHNFMD
Properties
zawiera
ZV]\VWNLHZáDFLZRFLRELHNWXRUD]RGSRZLDGDMFHLPZDUWoFL
Fields
=DZLHUDJUXSRELHNWyZ
Field
SRMHGQ\PGODND*GHMNROXPQ\]ELRUXUHNRUGyZ
7DNROHNFMDMHVWSU]\GDWQDGRRNUHODQLDZV]\VWNLFKNROXPQ]ELRUXUHNRUGyZJG\
QLHV]QDQHLFKQD]Z\LSRáR*HQLH
:\NRU]\VWDQLH$'2GRVWZRU]HQLD
DSOLNDFML)RUXP8\WNRZQLNÑZ
$E\SRND]DüZMDNLVSRVyEQDOH*\X*\ZDüRELHNWyZRPyZLRQ\FKZSRSU]HGQLHMF]
ci rozdzia
áXZWHMVHNFML]RVWDQLHSU]HGVWDZLRQ\NRPSOHWQ\NRGIRUXPX*\tkowników.
7HQV\VWHPEG]LHZ\NRU]\VW\ZDüED]GDQ\FK0LFURVRIW$FFHVVMHGQDN]HZ]JOGX
QD WR L* SRáF]HQLH ] GDQ\PL MHVW UHDOL]RZDQH SRSU]H] 2'%& Z\NRU]\VWDQLH LQQHM
ED]\GDQ\FKMDNQDSU]\NáDG64/6HUYHU]DMPXMHMHG\QLHNLONDPLQXW6\VWHP]RVWD
nie stworzony w sposób jak najprostszy, bez wykorzy
VWDQLD *DGQ\FK REUD]NyZ DQL
Z\P\OQ\FKVSRVREyZIRUPDWRZDQLD7DNLSURMHNWV\VWHPX]RVWDáSRG\NWRZDQ\FKFL
]DSHZQLHQLDMDNQDMZLNV]HMSURVWRW\NRGXDQLHGODWHJR*HQLHMHVWRQZymagany.
%D]öGDQ\FKRUD]FDä\NRG$63PRHV]]QDOHèQDZLWU\QLH::::\
GDZQLFWZD+(/,21SRGDGUHVHP
ftp://ftp.helion.com.pl/przyklady/asp.zip.
3RVNRSLRZDQLXSOLNXDUFKLZXPUR]SDNXMJRDQDVWöSQLHXPLHèQD
VHUZHU]HFDäñ]DZDUWRèNDUWRWHNL
Rozdzial-11
&]öè,,
3UH]HQWDFMDV\VWHPX
$SOLNDFMHIRUXPX*\WNRZQLNyZVGRVWSQHMX*RGGDZQD±LVWQLHMGáX*HMQL*,QWHUQHW
3RF]WNoZRLVWQLDá\SRGSRVWDFL%%6yZ±Bulletin Boards Services – miejsc, do których
PRJáHSU]HVyáDüS\WDQLDF]\WDüLQQHS\WDQLDDQDZHWF]DVDPLRWU]\P\ZDüRGSRwie-
G]L%%6\LVWQLHMFDá\F]DVMHGQDNQLHPDOZFDáRFL]RVWDá\]DVWSLRQHRGSRZLHdnikami
internetowymi – grupami dys
NXV\MQ\PL7HV\VWHP\NWyU\FKSU]\NáDG]RVWDáSU]HGVWD
wio
Q\ QD U\VXQNX V QLHPDO LGHnW\F]QH 8*\WNRZQLF\ ]D SRPRF VSHFMDOQHJR
oprogramowania takiego jak Outlook Express, prze
JOGDMZLaGRPRFLLWZRU]ZáDVQH
5\VXQHN
*UXS\G\VNXV\MQHV
SRSXODUQF]FL
Internetu
*UXSDG\VNXV\MQDSU]HGVWDZLRQDQDU\VXQNXLVWQLHMHZU]HF]\ZL
VWRFLLMHVWEDUG]RSU]\GDWQDGODSURJUDPLVWÑZ$630RQDMñ]QDOHè
QD VHUZHU]H
msnews.microsoft.com
D XF]HVWQLFWZR Z QLHM QLH Z\
PDJDSRGDZDQLDMDNLHJRNROZLHNKDVäDDQLLGHQW\ILNDWRUDX\WNRZQLND
6\VWHP NWyU\ VWZRU]\V] ]D SRPRF $63 EG]LH PXVLDá G\VSRQRZDü W\PL VDP\PL
PR*OLZRFLDPLFRLVWQLHMFHJUXS\G\VNXV\MQH/LVWDIXQNFMLV\VWHPXSRPR*H&L]Dpro-
MHNWRZDüNRQLHF]QHVWURQ\RUD]VWUXNWXUED]\GDQ\FK
X
8*\WNRZQLF\PXV]E\üZVWDQLHWZRU]\üQRZHZLDGRPRFL
X
8*\WNRZQLF\ PXV] E\ü Z VWDQLH SU]HJOGDü ZLDGRPRFL XWZRU]RQH SU]H]
QLFKVDP\FKRUD]SU]H]LQQ\FKX*\WNRZQLNyZ
X
8*\WNRZQLF\PXV]E\üZVWDQLHRGSRZLDGDüQDZLDGRPRFLDLFKRGpowie-
G]L SRZLQQ\ E\ü SUH]HQWRZDQH Z WDNL VSRVyE DE\ E\áR ZLDGRPR L* V RQH
]ZL]DQH]RU\JLQDOQZLDGRPoFL
5R]G]LDä
♦
7ZRU]HQLHDSOLNDFMLED]GDQ\FKSU]\X\FLXRELHNWÑZGDQ\FK$FWLYH;
X
8*\WNRZQLF\SRZLQQLE\üZVWDQLHXVXQüZLDGRPRüNWyUVWZRU]\OLMHGQDN
QLHPRJG\VSRQRZDüPR*OLZRFLXVXZDQLDZLDGRPRFLVWZRU]RQ\FKSU]H]
LQQ\FKX*\WNRZQLNyZ
X
8*\WNRZQLF\PXV]E\üZMDNLVSRVyELGHQW\ILNRZDQLDE\LFKZLDGRPRFL
PRJá\E\üR]QDF]DQH
7HIXQNFMHQLHPDOEH]SRUHGQLRUHSUH]HQWXMWRFRV\VWHPPXVLURELüMHGQDNGRGDWNR
wo stwa
U]DMNLONDQLHMDZQ\FKZ\PDJD0LDQRZLFLHV\VWHPPXVLSU]HFKRZ\ZDüZLD
GRPRFLRUD]OLVWX*\WNRZQLNyZLLFKLQIRUPDFMLLGHQW\ILNDF\MQ\FK
%D]DGDQ\FK
3LHUZV]\PHWDSHPEG]LHVWZRU]HQLHED]\GDQ\FKVSHáQLDMFHMSRGDQHZ\PDJDQLD.R
nie
F]QH EG]LH Z\NRU]\VWDQLH MHGynie dwóch tabel: jednej do przechowywania listy
X*\WNRZQLNyZLGUuJLHMGRSU]HFKRZ\ZDQLDZLDGRPRFL3RODWDEHORUD]LFKW\S\]R
VWDá\SU]HGVWDZLRQHZWDEHODFKRUD]
7DEHOD
Tabela User
1D]ZDSROD
7\SSROD
'äXJRèSROD
ID
AutoNumer
QLHGRVWSQD
FirstName
Tekst
30
LastName
Tekst
50
Tekst
50
LastVisit
Data/Godzina
QLGRVWSQD
UserID
Tekst
20
Password
Tekst
20
7DEHOD
Tabela Message
1D]ZDSROD
7\SSROD
'äXJRèSROD
ID
AutoNumer
QLHGRVWSQD
UserID
Liczba
/LF]EDFDáNRZLWDGáXJD
Parent
Liczba
/LF]EDFDáNRZLWDGáXJD
Subject
Tekst
50
Date
Data/Godzina
QLHGRVWSQD
Message
Memo
QLHGRVWSQD
&]öè,,
$E\XPR*OLZLüDSOLNDFML$63NRU]\VWDQLH]WHMED]\GDQ\FKEG]LHV]PXVLDáXPLHFLü
M QD VHrZHU]H ::: L VWZRU]\ü GOD QLHM QD]Z (UyGáD GDQ\FK 2'%& SOLNRZ OXE
V\VWHPRZ : SU]HdVWDZLRQ\FK GDOHM SU]\NáDGDFK ]DáR*\áHP *H WR ]URELáH RUD] *H
QDGDáHQD]ZLH(UyGáDGDQ\FKQD]ZÄ)RUXP´:LFHMLQIRUPDFMLGRW\F]F\FKWZRrze-
QLDQD]Z(UyGHáGDQ\FK]QDMG]LHV]ZSoprzednim rozdziale.
,GHQW\ILNDFMDX\WNRZQLNÑZ
=SXQNWXZLG]HQLDX*\WNRZQLNyZSLHUZV]\PNURNLHPSU]\NRU]\VWDQLX]IRUXPEG]LH
zalogowa
QLHVLGRV\VWHPX:W\PZáDQLHPLHMVFXSRZLQLHQ]DF]\QDüVL7ZyMNRG
.RG SU]HGVWDZLRQ\ QD OLVWLQJX WZRU]\ VWURQ ORJRZDQLD NWyU SRND]DQR QD U\
sunku 11.2.
5\VXQHN
8*\WNRZQLF\V
identyfikowani za
SRPRFWHMVWURQ\
logowania
/LVWLQJ7DVWURQD:::SR]ZDODX*\WNRZQLNRPQD]DORJRZDQLHVLGRV\VWHPX/RJowanie.htm)
1.
<HTML>
2.
<HEAD>
3.
7,7/(!/RJRZDQLHGR)RUXP8*\WNRZQLNyZ7,7/(!
4.
</HEAD>
5.
6.
<BODY BACKGROUND="">
7.
8.
+$/,*1 &(17(5!)RUXP8*\WNRZQLNyZ%5!=DORJXMVL+!
9.
10.
<FORM ACTION="ObslugaLogowania.asp" METHOD="POST" TARGET="_parent">
11.
<DIV ALIGN="CENTER">
12.
<CENTER>
13.
<TABLE BORDER="0">
14.
<TR>
15.
7'!67521*!,'X*\WNRZQLND67521*!
16.
<INPUT TYPE="TEXT" SIZE="20" NAME="UserName"></TD>
17.
</TR>
18.
<TR>
19.
7'!67521*!+DVáR67521*!
20.
<INPUT TYPE="PASSWORD" SIZE="20" NAME="Password"</TD>
21.
</TR>
5R]G]LDä
♦
7ZRU]HQLHDSOLNDFMLED]GDQ\FKSU]\X\FLXRELHNWÑZGDQ\FK$FWLYH;
22.
<TR>
23.
</TR>
24.
<TR>
25.
<TD>
26.
,13877<3( 68%0,71$0( /RJLQ9$/8( =DORJXMVLGR
ÖREV]DUXX*\WNRZQLNyZ!
27.
,13877<3( 5(6(71$0( &]\ü9$/8( :\F]\üIRUPXODU]!
28.
</TD>
29.
</TR>
30.
</TABLE>
31.
</CENTER>
32.
</DIV>
33.
<DIV ALIGN="CENTER">
34.
<CENTER>
35.
+!-HOL]DSRPQLDáHOXE(OHSRGDáHVZRMHKDVáRWR
36.
<A HREF="ZapomnianeHaslo.asp" TARGET="_parent">kliknij
Ö
tutaj</A>
37.
.</H6>
38.
</CENTER>
39.
</DIV>
40.
<DIV ALIGN="CENTER">
41.
<CENTER>
42.
+!%,*!1RZ\X*\WNRZQLNXD+5() 1RZ\8]\WNRZQLNDVS!NOLNQLM
Ö
tutaj</A>
43.
.</BIG></H6>
44.
</CENTER>
45.
</DIV>
46.
</FORM>
47.
</BODY>
48.
</HTML>
:LNV]RüVWURQ\SU]HGVWDZLRQHMQDOLVWLQJXMHVWEDUG]RSURVW\PNRGHP+70/±QLH
MHVWWR VWURQD$633RQL*HMZ\MDQLRQH]RVWDá\OLQL NWyUHPRJ]DLQWHUHVRZDü &LHELH
MDNRSURJUDPLVW/LQLD]DZLHUDMFD]QDF]QLNRWZLHUDMF\IRUPXODU]+70/RNUH
la plik, jaki zostanie wykona
Q\SRNOLNQLFLXQD SU]\FLVNX 6XEPLWZFHOX REVáX*HQLH
da
Q\FK ZSLVDQ\FK Z IRUPXODU]X : W\P SU]\SDGNX GR REVáXJL GDQ\FK VáX*\ SOLN
ObslugaLogowania.asp
SRGDZDQLHFLH*NLQLHMHVWNRQLHF]QHJG\*SOLNMHVWSU]H
FKRZ\ZDQ\ZWHMVDPHMNDUWRWHFHFRIRUPXODU]:OLQLDFKL]RVWDá\XPLHV]F]RQH
SROD VáX*FH RGSRZLHGQLRGR SRGDQLD QD]Z\ X*\WNRZQLND L KDVáD :D*Q\P V]F]Hgó-
áHPQDMDNLQDOH*\]ZUyFLüXZDJZW\FKOLQLDFKVQD]Z\QDGDQHREXSRORPJG\*
po
VáX*RQHGRSREUDQLDZDUWRFLW\FKSyO]NROHNFML
Request.Form
w programie ob-
VáXJXMF\PIRrmularz.
Kod przedstawiony na listingu 11.3 tworzy prosty formularz. Strona, która w rzeczywi-
VWRFLáF]\VL]ED]GDQ\FKLVSUDZG]DSRSUDZQRüLQIRUPDFMLRWR*VDPRFLX*\WNR
wni
ND MHVW RNUHORQD MDNR ÄFHO´ IRUPXODU]D MHVW WR VWURQD
ObslugaLogowania.asp
.
Inne formularze HTML i od
SRZLDGDMFHLPVNU\SW\$63]RVWDá\VWZRU]RQHGODREVáXJL
UHMHVWUDFMLQRZ\FKX*\WNRZQLNyZRUD]SoPRF\X*\WNRZQLNRPNWyU]\]DSRPQLHOLVZR
MHJRKDVáD
0LHMVFHPZNWyU\PVVSUDZG]DQHLQIRUPDFMHSRGDQHSU]H]X*\WNRZQLNDMHVWSURce-
GXUDREVáXJLVWURQ\ORJRZDQLDSU]HGVWDZLRQDQDOLVWLQJX%D]XMFQDSRSUDZQRFL
SRGDQHJR LGHQW\ILNDWRUD X*\WNRZQLND RUD] KDVáD WD VWURQD PXVL ]GHF\GRZDü MDN RE
VáXJLZDüSRSUDZQHRUD]QLHSRSUDZQHSUyE\ORJRZDQLD
&]öè,,
/LVWLQJWeryfikacja formularza logowania z listingu 11.3
1.
<HTML>
2.
<HEAD>
3.
7,7/(!/RJRZDQLHX*\WNRZQLNDGRV\VWHPX)RUXP
Ö8*\WNRZQLNyZ7,7/(!
4.
</HEAD>
5.
<BODY BGCOLOR="#FFFFFF">
6.
<%
7.
Dim Conn
8.
Dim RSUser
9.
Dim SQL
10.
11.
Set Conn = Server.CreateObject("ADODB.Connection")
12.
Set RSUser = Server.CreateObject("ADODB.Recordset")
13.
14.
Conn.Open "Forum"
15.
16.
SQL = "SELECT * FROM User WHERE UserID='" & _
17.
Request.Form("UserName") & "'"
18.
RSuser.Open SQL,Conn,1,2
19.
20.
If RSUser.EOF Then
21.
%>
22.
+$/,*1 &(17(5!8*\WNRZQLNQLHLVWQLHMH+!
23.
<H3 ALIGN="CENTER"><%= Request.Form("UserName") %></H3>
24.
<H3 ALIGN="CENTER"><A HREF="Logowanie.htm" TARGET="_parent">Kliknij
ÖWXWDMDE\]DORJRZDüVLSRQRZQLH$!+!
25.
<P> </P>
26.
<H3 ALIGN="CENTER"> LUB </H3>
27.
<P> </P>
28.
<H3 ALIGN="CENTER"><A HREF="NowyUzytkownik.asp"
Ö7$5*(7 BSDUHQW!.OLNQLMWXWDMDE\GRáF]\üGR)RUXP$!+!
29.
<%
30.
Else
31.
If RSUser("Password") <> Request.Form("Password") Then
32.
%>
33.
+$/,*1 &(17(5!3RGDQRQLHSUDZLGáRZHKDVáRGOD+!
34.
<H3 ALIGN="CENTER"><%= Request.Form("UserName") %></H3>
35.
<H3 ALIGN="CENTER"><A HREF="Logowanie.htm" TARGET="_parent">Kliknij
ÖWXWDMDE\]DORJRZDüVLSRQRZQLH$!+!
36.
<P> </P>
37.
<H3 ALIGN="CENTER"> LUB </H3>
38.
<P> </P>
39.
<H3 ALIGN="CENTER"><A HREF="ZapomnianeHaslo.asp">Kliknij tutaj, aby
40.
SU]HVáDü&LKDVáR]DSRPRFSRF]W\HOHNWURQLF]QHM$!+!
41.
<%
42.
Else
43.
Session("User") = "Yes"
44.
Session("User_ID") = RSUser("ID")
45.
Session("UserName") = RSUser("FirstName") & " " &
Ö
RSUser("LastName")
46.
%>
47.
+$/,*1 &(17(5!/RJRZDQLHSRP\OQH+!
48.
<H3 ALIGN="CENTER">Witamy ponownie <%= RSUser("FirstName") %></H3>
49.
+$/,*1 &(17(5!2VWDWQLRRGZLHG]LáHV\VWHP
Ö
RSUser("LastVisit") %></H3>
50.
<H3 ALIGN="CENTER">
51.
$+5() )RUXPDVS7$5*(7 BSDUHQW!.OLNQLMWXWDMDE\ZHMüQD
Ö)RUXP8*\WNRZQLNyZ$!
5R]G]LDä
♦
7ZRU]HQLHDSOLNDFMLED]GDQ\FKSU]\X\FLXRELHNWÑZGDQ\FK$FWLYH;
52.
</H3>
53.
<%
54.
RSUser("LastVisit") = Now
55.
RSUser.Update
56.
End If
57.
End If
58.
59.
%>
60.
</BODY>
61.
</HTML>
3U]HGVWDZLRQ\SRZ\*HMVNU\SWSUyEXMHSREUDüUHNRUGED]\GDQ\FKGODSRGDQHJRLGHQ
ty
ILNDWRUDX*\WNRZQLNDOLQLHGR-HOLWDNLUHNRUGQLHLVWQLHMHR]QDF]DWR*HQLH
SRGDQRSRSUDZQHJRLGHQW\ILNDWRUDLVNU\SWZ\ZLHWODRGSRZLHGQLNRPXQLNDWOLQLH
±-HOLUHNRUGLVWQLHMHWRNROHMQ\IUDJPHQWNRGXOLQLH±VSUDZG]DF]\SR
GDQRSRSUDZQHKDVáR-HOLQLHWRZyZLHWODQ\MHVWNROHMQ\NRPXQLNDW:SU]\SDGNX
JG\ SRGDQR SRSUDZQH KDVáR MHVW Z\NRQ\ZDQ\ NRG OLQLH ± NWyU\ ]DSLVXMH
Z\EUDQHZDUWRFLZRELHNFLH
Session
G]LNLF]HPXEG]LHPR*QD]QLFKVNRU]\VWDü
ZSU]\V]áRFL1DVWSQLHMHVWZ\ZLHWODQ\NRPXQLNDWZLWDMF\X*\WNRwnika (linie 43. –
±1DNRFXMHVWXDNWXDOQLDQDZDUWRüSROD
LastVisit
, w której jest zapisy-
wa
QDGDWDDNWXDOQHM ZL]\W\ -HVWWRRVWDWQLDF]\QQRüSR NWyUHMZ\NRQ\ZDQLH VWURQ\
zosta
QLH]DNRF]one.
3RZ\*V]\NRGSU]HGVWDZLDNLONDIXQNFML$'2ND*GD]QLFK]RVWDáDEDUG]LHMV]F]HgóáR
ZRRSLVDQDZQDVWSQ\FKVHkFMDFKUR]G]LDáX
2WZLHUDQLHSRäñF]HQLD
/LQLHLOLVWLQJXWZRU]LRWZLHUDMSRáF]HQLH]ED]GDQ\FK1RZ\SRF]
tko
ZR]DPNQLW\RELHNW&RQQHFWLRQMHVWWZRU]RQ\]DSRPRFPHWRG\
Server.Crea
-
teObject
,GHQW\ILNDWRU NODV\ &ODVV ,' $'2'%&RQQHFWLRQ MHVW NRQLHF]Q\ JG\*
LQIRUPXMH RQ PHWRG R W\P MDNL RELHNW QDOH*\ VWZRU]\ü 1DVWSQLH Z OLQLL MHVW
Z\ZRá\ZDQD PHWRGD
Open
QRZHJR SRáF]HQLD MDNR DUJXPHQW MHM Z\ZRáDQLD MHVW
SRGDZDQDQD]ZD(UyGáDGDQ\FKZ\NRU]\VW\ZDQHMED]\GDQ\FK-HMSLHUZV]\SDUDPHWU
MHVW RGSRZLHGQLNLHP ZáDFLZRFL
ConnectionString
obiektu
Connection
i mo
*H
]RVWDü RNUHORQ\ SU]HG Z\ZRáDQLHP PHWRG\
Open
, jak pokazano na poni
*szym
SU]\NáDG]LH
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.ConnectionString = "Forum"
Conn.Open
3RZ\*V]\NRGMHVWFDáNRZLFLHUyZQRZD*Q\NRGRZLSU]HGVWDZLRQHPXQDOLVWLQJX±
Z\NRQXMHWHVDPHF]\QQRFLFKRüZQLHFRLQQ\VSRVyE:W\PSU]\SDGNXZáDFLZRü
ConnectionString
]DZLHUD SR SURVWX QD]Z (UyGáD GDQ\FK MHGQDN PR*H RQD
]DZLHUDüWDN*HLQQHLQIRUPDFMHWDNLHMDNLGHQW\ILNDWRUX*\WNRZQLNDLKDVáRGRVWSXGR
ED]\GDQ\FK-HOLGODSU]\NáDGXGRVWSGRED]\GDQ\FKZ\PDJDáE\X*\FLDLGHQW\fi-
NDWRUDX*\WNRZQLNDRZDUWRFL
"sa"
RUD]SXVWHJRKDVáDWRPyJáE\X*\üZáDFLZRü
ConnectionString
RZDUWRFL
"DSN=Forum;userid=sa;pwd=;"
&]öè,,
3DPLWDM*HPHWRGD2SHQSRELHUDWDN*HGZDRSFMRQDOQHSDUDPHWU\RSUyF]
Connec
-
tionString
±LGHQW\ILNDWRUX*\WNRZQLNDRUD]KDVáR-HOLFKFHV]WRPR*HV]SRGDüWH
ZDUWRFLMDNRRGG]LHOQHDUJXPHQW\
Conn.Open "Forum", "sa", ""
1LH]DOH*QLH RG PHWRG\ MDNLHM X*\MHV] SU]HG Z\NRU]\VWDQLHP RELHNWX
Connection
,
EG]LHV]JRPXVLDáVWZRU]\üLRWZRU]\ü
7ZRU]HQLHLRWZLHUDQLH]ELRUXUHNRUGÑZ
/LQLH L OLVWLQJX WZRU] L RWZLHUDM ]ELyU UHNRUGyZ RELHNW
Recordset
).
W
Z\ZRáaniu metody
Open
]RVWDáDX*\WDJUXSDSDUDPHWUyZ3RGREQLHMDNZSU]\pad-
ku omówionej wcze
QLHM PHWRG\
Open
obiektu
Connection
WDN*H L WHUD] ND*G\
z
DUJXPHQWyZPR*H]RVWDüRNUeORQ\SU]\Z\NRU]\VWDQLXZáDFLZRFLNWyUHMZDUWRü
MHVW SRGDZDQD SU]HG Z\ZRáDQLHP PHWRG\
Open
.RG SU]HGVWDZLRQ\ SRQL*HM ] IXQ
kcjonalnego punktu widzenia, odpowiada kodowi z listingu 11.4.
RSUser.Source = SQL
Set RSUser.ActiveConnection = Conn
RSUser.CursorType = 1 'Keyset
RSUser.LockType = 2 'Pesymistyczny
RSUser.Open
0XVLV]SDPLWDüRSRGDQLXW\FKZDUWRFLQLH]DOH*QLHRGPHWRG\MDNGRWHJRZ\korzy-
VWDV]JG\*ZSU]HFLZQ\PZ\SDGNX]RVWDQ]DVWRVRZDQHZDUWRFLGRP\OQH-HOLQLH
dysponujesz stworzonym i otworzonym obiektem
Connection
, jednak pomimo tego
FKFHV]RWZRU]\ü]ELyUUHNRrGyZWRPR*HV]]DVWSLüDUJXPHQW
Conn
IDNW\F]Q\PáD
FXFKHP]QDNyZX*\ZDQ\PGRQDZL]aQLDSRáF]HQLD]ED]GDQ\FK
RSUser.Open SQL, "Forum", 1,2
:\GDMHVL*HWDNDPHWRGDGDMHGRNáDGQLHLGHQW\F]QHUH]XOWDW\MDNSRSU]HGQLDWDNMH
GQDNQLHMHVW=DND*G\PUD]HPJG\]ELyUUHNRUGyZMHVWWZRU]RQ\SU]\Z\NRU]\VWDQLX
WHM PHWRG\ RNUHODQLD SRáF]HQLD MHVW WZRU]RQ\ QRZ\ RELHNW
Connection
. Przedsta-
ZLRQ\SRQL*HMNRGSRZRGXMHVWZorzenie trzech obiektów
Connection
:
Set RSPrzykalad1 = Server.CreateObject("ADODB.Recordset")
Set RSPrzykalad2 = Server.CreateObject("ADODB.Recordset")
Set RSPrzykalad3 = Server.CreateObject("ADODB.Recordset")
RSPrzyklad1.Open SQL, "Forum", 1, 2
RSPrzyklad2.Open SQL, "Forum", 1, 2
RSPrzyklad3.Open SQL, "Forum", 1, 2
-HGQDNNRGSU]HGVWDZLRQ\SRQL*HMZ\NRU]\VWXMHW\ONRMHGHQRELHNW
Connection
FKRü
jego wykonanie daje identyczne rezultaty):
Set RSPrzykalad1 = Server.CreateObject("ADODB.Recordset")
Set RSPrzykalad2 = Server.CreateObject("ADODB.Recordset")
Set RSPrzykalad3 = Server.CreateObject("ADODB.Recordset")
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "Forum"
RSPrzyklad1.Open SQL, Conn, 1, 2
RSPrzyklad2.Open SQL, Conn, 1, 2
RSPrzyklad3.Open SQL, Conn, 1, 2
5R]G]LDä
♦
7ZRU]HQLHDSOLNDFMLED]GDQ\FKSU]\X\FLXRELHNWÑZGDQ\FK$FWLYH;
:\NRU]\VWDQLH W\ONR MHGQHJR RELHNWX &RQQHFWLRQ RJUDQLF]D REFL*HQLH VHUZHUD ED]\
da
Q\FKGRMHGQHJRSRáF]HQLDQDND*G\Z\NRQ\ZDQ\ZVSyáELH*QLHVNU\SW3R]ZDODWR
na otrzymanie mak
V\PDOQHMOLF]E\UyZQRF]HVQ\FKSRáF]HJG\*MHGQRSRáF]HQLHMHVW
PLQLPDOQOLF]ESRáF]HMDNPR*QDVWZRU]\üQDMHGQHMVWURQLH:QDVWSQHMVHNFML
]RVWDQLHSU]HGVWDZLRQDPHWRGRNUHOania czy zbiór rekordów zawiera jakiekolwiek da-
QHQLH]DOH*QLHRGPHWRG\MDND]RVWDáDZ\NRU]ystana do jego stworzenia.
6SUDZG]DQLHF]\]ELÑUUHNRUGÑZMHVWSXVW\
Zanim zrobisz cokolwiek ze zbiorem rekordów otworzonym w linii 18. listingu 11.4,
QDOH*\VSUDZG]LüF]\QLHMHVWRQSXVW\'RWHJRZáDQLHVáX*\NRGXPLHV]F]RQ\ZOLQLL
-HOL]ELyUUHNRUGyZQLHMHVWSXVW\WRSRMHJRRWZRU]HQLXZVND(QLNUHNRUGXEG]LH
umieszczony na pierw
V]\PUHNRUG]LHDZáDFLZRü
EOF
EG]LHPLDáDZDUWRü
false
.
:áDFLZRüWDQLH]ZáRF]QLHSRRWZRU]HQLX]ELRUXUHNRUGyZEG]LHPLDáDZDUWRü
true
W\ONR L Z\áF]QLH ZWHG\ JG\ ]ELyU UeNRUGyZ EG]LH SXVW\ -HOL VSUyEXMHV] Z\ZRáDü
MDNNROZLHNPHWRGRELHNWX
Recordset
MHOLZVND(QLNUHNRUGyZQLH]QDMGXMHVLQD
SRSUDZQ\PUHNRUG]LHQDSU]\NáDGJG\ZáDFLZRü
BOF
lub
EOF
PDZDUWRü
true
), to
]RVWDQLHZ\JHQHURZDQ\EáG
6SUDZG]HQLH Z\äñF]QLH ZäDFLZRFL
EOF
EöG]LH Z\VWDUF]DMñFH W\ONR
ZWHG\ JG\ ]RVWDQLH Z\NRQDQH WX SR RWZRU]HQLX ]ELRUX UHNRUGÑZ
-HOLLVWQLHMHPROLZRèHSU]HGZ\NRQDQLHPWHVWXE\ä\UHDOL]RZDQH
MDNLH RSHUDFMH QD ]ELRU]H UHNRUGÑZ WR SRZLQLHQH VSUDZG]Dè ]DUÑ
ZQRZäDFLZRè
EOF
MDNL
BOF
3RELHUDQLHZDUWRFL]H]ELRUXUHNRUGÑZ
-HOL]ELyUUHNRUGyZQLHMHVWSXVW\WRSURJUDPEG]LHPyJáVNRU]\VWDü]SyO]ELRUX3R
QL*HM]oVWDáDSRGDQDVNáDGQLDX*\ZDQDGRSRELHUDQLDZDUWRFLSyO]ELRUXUHNRUGyZ
<
NazwaZbioruRekordów>("<NazwaPola>")
7RSROHFHQLHPR*H]RVWDüZ\NRU]\VWDQHGRSREUDQLDOXERNUHOHQLDZDUWRFLGRZROQHJR
SROD:U]HF]\ZLVWRFLMHVWRQRRGSRZLHGQLNLHPSRQL*V]HJRSROHFHQLD
RSUser.Fields.Item("UserID").Value
']LHMHVLWDNJG\*NROHNFMD
Fields
MHVWGRP\OQZáDFLZRFLRELHNWX
Recordset
,
ZáDFiZRü
Item
± GRP\OQ ZáDFLZRFL NROHNFML
Fields
D ZáDFLZRü
Value
–
GRP\OQ ZáaFLZRFL RELHNWX
Field
:áDQLH GODWHJR RED SROHFHQLD V VRELH
UyZQRZD*QH 7R ZD*QD LQIRrPDFMD NWyU ZDUWR ]DSDPLWDü ± SR FR ERZLHP X*\ZDü
EDUG]LHMVNRPSOLNRZDQHMVNáDGQL
0RG\ILNRZDQLHZDUWRFLZ]ELRU]HUHNRUGÑZ
-HOLQLHRWZRU]\áH]ELRUXUHNRUGyZMDNRSU]H]QDF]RQHJRW\ONRGRRGF]\WXSDWU]RPywio-
ne
ZF]HQLHMZáDFLZRFL
CursorType
oraz
LockType
WREG]LHV]PyJáPRdyfiko-
ZDü ZDUWRFL SyO X*\ZDMF GR WHJR GZXHWDSRZHJR SURFHVX : SLHUZV]HM NROHMQRFL
&]öè,,
SU]\X*\FLXQRUPDOQHJRRSHUDWRUDSU]\SLVDQLDXPLHFLV]ZDUWRFLZZ\EUDQ\FKSRODFK
SDWU]OLQLDOLVWLQJXDQDVWSQLHZ\ZRáDV]PHWRG
Upadate
-HOL]PRdyfiku-
MHV] ZDUWRFL SyO D QDVWSQLH ]DPNQLHV] ]ELyU UHNRUGyZ OXE SU]HMG]LHV] GR LQQHJR
UHNRUGX WR ZSURZDG]RQH PRG\ILNDFMH ]RVWDQ XWUDFRQH =ELRU\ UHNRUGyZ X*\ZDQH
w
QLHNWyU\FKLQQ\FKPRGHODFKGDQ\FKWDNLFKMDN'$2Z\PDJDMDE\SU]HGPRG\
ILNDFM ZDUWRFL SyO ]RVWDáD Z\ZRáDQD PHWRGD
Edit
. Metoda ta nie istnieje jednak
w
$'2D]DWHPMHMX*\FLHVSRZRGXMHZ\JHQHURZDQLHEáGXÄ2EMHFWGRHVQRWVXSSRUW
this method”).
7ZRU]HQLHQRZHJRX\WNRZQLND
:SRSU]HGQLHMVHNFML]RVWDáDSU]HGVWDZLRQDVWURQDVáX*FDGRSRGDZDQLDLGHQW\ILNDWRUD
X*\WNRwQLNDRUD]KDVáDMHGQDNVNGELRUVLWHZDUWRFL":V\VWHPLHPXVL]QDMGRZDü
VLVWURQDSR]ZaODMFDQDUHMHVWUDFMQRZ\FKX*\WNRZQLNyZFRSR]ZROLLPQDNRrzysta-
nie
]IRUXP7DVWURQD]RVWDáDMX*SRáF]RQD]HVWURQVáX*FGRORJRZDQLDX*\WNRwni-
NyZMHMNRG]RVWDáSU]HGVWDZLRQ\QDOLVWLQJX5\VXQHNSU]HGVWDZLDIRUPXODU]
UHMHVWUDF\MQ\QRZ\FKX*\WNRZQLNyZWZorzony przez kod z listingu 11.5.
5\VXQHN
Formularz
rejestracji nowych
X*\WNRZQLNyZ
pozwala
X*\WNRZQLNRPQD
podanie informacji,
NWyUH]RVWDQ
zapisane w bazie
danych
/LVWLQJ7HQIRUPXODU]+70/SURVLX*\WNRZQLNDRSRGDQLHLQIRUPDFMLNRQLHF]Q\FKGRVWZRU]HQLD
nowego rekordu w tabeli
User
(NowyUzytkownik.asp)
1.
<HTML>
2.
<HEAD>
3.
4.
7,7/(!5HMHVWUDFMDQRZ\FKX*\WNRZQLNyZ7,7/(!
5.
</HEAD>
6.
7.
<BODY BGCOLOR="#FFFFFF" TEXT="#000000">
8.
9.
+$/,*1 &(17(5!)RUPXODU]UHMHVWUDFMLQRZ\FKX*\WNRZQLNyZ+!
10.
11.
<FORM METHOD="POST" ACTION="StworzUzytkownika.asp">
12.
<DIV ALIGN="CENTER"><CENTER><TABLE BORDER="1">
13.
<TR>
5R]G]LDä
♦
7ZRU]HQLHDSOLNDFMLED]GDQ\FKSU]\X\FLXRELHNWÑZGDQ\FK$FWLYH;
14.
7'!67521*!,PL67521*!7'!
15.
<TD><INPUT TYPE="TEXT" NAME="txtFirstName" SIZE="30"></TD>
16.
</TR>
17.
<TR>
18.
<TD><STRONG>Nazwisko:</STRONG></TD>
19.
<TD><INPUT TYPE="TEXT" NAME="txtLastName" SIZE="30"></TD>
20.
</TR>
21.
<TR>
22.
<TD><STRONG>Adres Email:</STRONG></TD>
23.
<TD><INPUT TYPE="TEXT" NAME="txtEmailAddress" SIZE="50"></TD>
24.
</TR>
25.
<TR>
26.
<TD><STRONG> </STRONG></TD>
27.
<TD> </TD>
28.
</TR>
29.
<TR>
30.
7'!67521*!,GHQW\ILNDWRUX*\WNRZQLND67521*!7'!
31.
<TD><INPUT TYPE="TEXT" NAME="txtUserID" SIZE="20"></TD>
32.
</TR>
33.
<TR>
34.
7'!67521*!+DVáR67521*!7'!
35.
<TD><INPUT TYPE="PASSWORD" NAME="txtPassword" SIZE="20"></TD>
36.
</TR>
37.
</TABLE>
38.
</CENTER></DIV>
39.
<DIV ALIGN="CENTER">
40.
<CENTER>
41.
3!,13877<3( 68%0,79$/8( 6WZyU]QRZHJRX*\WNRZQLND
Ö
NAME="B1">
42.
,13877<3( 5(6(79$/8( :\F]\üZV]\VWNLHSROD1$0( %!3!
43.
</CENTER>
44.
</DIV>
45.
</FORM>
46.
</BODY>
47.
</HTML>
Listing 11.5 przedstawia kod formularza HTML. Sam formularz zawiera kod, którego
Z ZLNV]oFLQLHPXVLV]SLVDü VDP3U]HGVWDZLRQ\ IRUPXODU] PR*QD VWZRU]\ü Z GR
ZROQ\PHG\WRU]H+70/MHGQ\P]OHSV]\FKFKRüQLHMHG\Q\PPR*HE\ü)URQW3DJH
: U]HF]\ZLVWRFL VDP XNáDG IRrPXODU]D QLH MHVW ZD*Q\ GOD SURJUDPLVW\ ]QDF]HQLH
posiada jedynie fakt istnienia pól i przycisków formularza oraz ich nazwy. Nazwy pól
RUD]SU]\FLVNyZIRUPXODU]D]GHILQLRZDQH]RVWDá\ZOLQLDFKLV
RQHZ\NRU]\VW\ZDQHZVNU\SFLHNWyU\REVáXJXMHZ\QLNLZ\NRQDQLDWHMVWURQ\1D]ZD
VNU\SWXREVáXJXMFHJRIRUPXODU]]RVWDáDSRGDQDZOLQLLDMHJRNRGPR*QD]QDOH(ü
na listingu 11.6.
/LVWLQJ7HQVNU\SWSU]HWZDU]DZDUWRFLZSURZDG]RQHGRIRUPXODU]DQDVWURQLH1RZyUzytkownik.asp
LWZRU]\QRZHJRX*\WNRZQLNDZWDEHOLUser (StworzUzytkownika.asp)
1.
<HTML>
2.
<HEAD>
3.
7,7/(!6WZyU]QRZHJRX*\WNRZQLND7,7/(!
4.
</HEAD>
5.
6.
<BODY BGCOLOR="#FFFFFF">
7.
<%
8.
Dim Conn
&]öè,,
9.
Dim RSUser
10.
Dim SQL
11.
12.
Set Conn = Server.CreateObject("ADODB.Connection")
13.
Set RSUser = Server.CreateObject("ADODB.Recordset")
14.
15.
Conn.Open "Forum"
16.
17.
SQL = "SELECT * FROM User WHERE UserID='" &
Ö
Request.Form("txtUserid") & "'"
18.
19.
RSUser.Open SQL,Conn,1,2
20.
21.
If Not RSUser.EOF Then
22.
%>
23.
24.
+$/,*1 &(17(5!8*\WNRZQLNMX*LVWQLHMH+!
25.
26.
<H3 ALIGN="CENTER"> <%= Request.Form("txtUserId") %></H3>
27.
28.
<H3 ALIGN="CENTER"><A HREF="NowyUzytkownik.asp" TARGET="_parent">
29.
.OLNQLXWXWDMDE\SRGDüLQQ\LGHQW\ILNDWRUX*\WNRZQLND$!+!
30.
31.
<P> </P>
32.
33.
<H3 ALIGN="CENTER">LUB</H3>
34.
35.
<P> </P>
36.
37.
<H3 ALIGN="CENTER"><A HREF="ZapomnianeHaslo.asp" TARGET="_parent">
38.
.OLNQLMWXWDMMHOLFKFHV]DE\SU]HVáDü&LKDVáRSRF]W
39.
HOHNWURQLF]QMHOL]DSRPQLDáHJRDZF]HQLHM]DUHMHVWURZDáHVL
ÖSU]\X*\FLXWHJRLGHQW\ILNDWRUD$!+!
40.
<%
41.
Else
42.
43.
RSUser.AddNew
44.
RSUser("FirstName") = Request.Form("txtFirstName")
45.
RSUser("LastName") = Request.Form("txtLastName")
46.
RSUser("UserID") = Request.Form("txtUserID")
47.
RSUser("Password") = Request.Form("txtPassword")
48.
RSUser("Email") = Request.Form("txtEmail")
49.
RSUser("LastVisit") = Now()
50.
RSUser.Update
51.
%>
52.
53.
+$/,*1 &(17(5!6WZRU]RQRQRZHJRX*\WNRZQLND+!
54.
55.
<H3 ALIGN="CENTER">
56.
:LWDP\QD)RUXP8*\WNRZQLNyZ 5HTXHVW)RUPW[W)LUVW1DPH!
57.
</H3>
58.
59.
<H3 ALIGN="CENTER">
60.
$+5() /RJRZDQLHKWP7$5*(7 BSDUHQW!.OLNQLMWXWDMDE\VL
Ö]DORJRZDü$!+!
61.
<%
62.
End If
63.
%>
64.
</BODY>
65.
</HTML>
5R]G]LDä
♦
7ZRU]HQLHDSOLNDFMLED]GDQ\FKSU]\X\FLXRELHNWÑZGDQ\FK$FWLYH;
7HQ VNU\SW SU]HSURZDG]D W\ONR MHGQ NRQWURO SRSUDZQRFL GDQ\FK XPLHV]F]RQH
w
OLQLDFK ± VSUDZG]DMF F]\ SRGDQ\ LGHQW\ILNDWRU X*\WNRZQLND MX* LVWQLHMH
Zu
SHáQLHSXVWHZDUWRFL]RVWDá\E\]DDNFHSWRZDQHMHGQDNMHVWWRGRSU]\MFLDZSU]\
padku testowego systemu ADO. Za
GDQLHPMDNLHPLDáLOXVWURZDüWHQNRQNUHWQ\VNU\SW
MHVWGRGDZDQLHQRZHJRUHNRUGXGR]ELRUXUHNRUGyZ]DGDQLHWR]RVWDáRV]F]HJyáRZLHM
omówione w kolejnych sekcjach.
'RGDZDQLHUHNRUGÑZGR]ELRUXUHNRUGÑZ
3RVSUDZG]HQLX*HZSURZDG]RQ\LGHQW\ILNDWRUX*\WNRZQLNDQLHZ\VWSXMHMX*ZED]LH
GDQ\FKOLQLDOLVWLQJXQDGV]HGáF]DVDE\GRGDüX*\WNRZQLNDGRWDEHOL=ELyU
re
NRUGyZPXVL]RVWDüZF]HQLHMRWZRU]RQ\QDWDEHOLGRNWyUHMFKFHV]GRGDZDüUHkordy.
:SRZ\*V]\PVNU\SFLH]ELyUUHNRUGyZ]RVWDáRWZRU]RQ\QDWDEHOL
User
SU]\X*\ciu
kry
WHULyZ NWyUH QLH ]RVWDá\ VSHáQLoQH 'R RWZDUFLD ]ELRUX UHNRUGyZ SRVáX*\áR SROH
cenie SQL umieszczone w linii 17. Nawet pomi
PRWHJR*HQLH]RVWDá\]ZUyFRQH*DGQH
UHNRUG\]ELyUUHNRUGyZFDá\F]DVZVND]XMHQDWDEHO8VHUD]DWHPGRGDZDQHUHNRUG\
EGXPLHV]F]DQHZáDQLHZQLHM-HOLEG]LHV]SRWU]HERZDáRWZRU]\ü]ELyUUHNRUGyZ
Z\áF]QLHZFHOXGRGDZDQLDQRZ\FKUHNRUGyZWRZSROHFHQLX64/SRZLQLHQHSRGDü
WDNLHNU\WHULDNWyUHVSRZRGXM*H QLH]RVWDQ ]ZUyFRQH*DGQH UHNRUG\7DNLPSROH
FHQLHPPR*HE\ü
SELECT * FROM User WHERE 1=2
1LH PD *DGQHJR VHQVX Z ]X*\ZDQLX SDPLFL L ]DVREyZ SURFHVRUD QD SHáQ\ ]ELyU UH
NRUGyZMHOLQLHMHVWRQGRQLF]HJRSRWU]HEQ\
.LHG\EG]LHV]MX*G\VSRQRZDá]ELRUHPUHNRUGyZWRGRGDQLHIDNW\F]QHJRUHNRUGXMHVW
áDWZ\PWUyMHWDSRZ\PSURFHVHP
1.
:\ZRáDMPHWRG
AddNew
(linia 43.).
2.
3U]\SLV]SRORPRGSRZLHGQLHZDUWRFLOLQLH±
3.
:\ZRáDMPHWRG
Update
(linia 50.).
=DXZD**HQLHPXVLV]RNUHODüZDUWRFLSROD,'LGHQW\ILNDWRUDJG\*MHVWRQDRNUH
lana auto
PDW\F]QLH SRSU]H] LQNUHPHQWDFM ZDUWRFL WHJR VDPHJR SROD SRSU]HGQLHJR
UHNRUGXMHVWWRSROHDXWRLQNUHPHQWXMFH:V]HONDZHU\ILNDFMDQDSR]LRPLHUHNRUGX
ZW\PZHU\ILNDFMDLQGHNVyZMHVWZ\NRQ\ZDQDZPRPHQFLHZ\ZRáDQLDPHWRG\
Upda
-
te
D]DWHP]D]Z\F]DMZáDQLHZW\PPLHMVFXSRMDZLDMVLEáG\%áG\SRZRdowane
SU]H] QLH]JRGQRü W\SyZ OXE ZLHONRFL SyO V JHQerowane w liniach, w których
]QDMGXMHVLSU]\SLVDQLHZDUWRFLGRSROD
:\ZLHWODQLH)RUXP
*áyZQ VWURQ WZRU]RQHJR V\VWHPX MHVW
Forum.asp
przedstawiona na listingu 11.7.
6áX*\ RQD GR Z\ZLHWODQLD ZLDGRPRFL SRJUXSRZDQ\FK ZHGáXJ SURZDG]RQ\FK UR]
PyZ1DWHMVWURQLHX*\tNRZQLNPR*HNOLNQüQDGRZROQHMZLDGRPRFLFRVSRZRGXMH
Z\ZLHWOHQLHMHMWHNVWXOXEGRGDüQRZZLDGRPRü1DU\VXQNX]RVWDáDSU]HGsta-
&]öè,,
ZLRQDNRPSOHWQDVWURQDZ\ZLHWORQDZSU]eJOGDUFH)XQNFMDRGSRZLDGDQLDQDZLDdo-
PRFLMHVWGRVWSQDW\ONRQDVWURQLHSUH]HQWXMFHMWUHüZLDGRPRFL
5\VXQHN
Wyniki wykonania
Forum.asp
SU]HGVWDZLDMOLVW
wszystkich
ZLDGRPRFL
zapisanych w bazie
danych
/LVWLQJ7DVWURQDZ\ZLHWODZV]\VWNLHZLDGRPRFLSU]HFKRZ\ZDQHZWDEHOL0HVVDJHV)RUXPDVS
1.
<HTML>
2.
<SCRIPT LANGUAGE="VBSCRIPT" RUNAT="SERVER">
3.
Sub WyswietlWiadomosciPotomne( Parent, Level )
4.
5.
Dim RSMessages
6.
Dim SQL
7.
Dim i
8.
9.
Set RSMessages = Server.CreateObject("ADODB.Recordset")
10.
11.
SQL = "SELECT Message.ID, " & _
12.
"Message.Subject, Message.Date, " & _
13.
"User.UserID FROM Message, User " & _
14.
"WHERE Message.UserID = User.ID AND " & _
15.
"Message.Parent=" & Parent
16.
17.
RSMessages.Open SQL,Conn,1,2
18.
19.
Do While Not RSMessages.EOF
20.
21.
Response.Write "<TR>"
22.
Response.Write "<TD>"
23.
24.
For i = 1 to level
25.
Respnse.Write " "
26.
Next
27.
28.
Response.Write "<A HREF='Wiadomosc.asp?id="
29.
Response.Write RSMessages("ID") & "'>"
30.
Response.Write RSMessages("Subject")
31.
Response.Write "</A>"
32.
Response.Write "</TD><TD>"
33.
Response.Write RSMessages("UserID")
34.
Response.Write "</TD><TD>"
35.
Response.Write FormatDateTime( RSMessages("Date"),2)
36.
Response.Write "</TD></TR>"
37.
38.
WyswietlWiadomosciPotomne RSMessages("ID"), Level+1
39.
RSMessages.MoveNext
40.
5R]G]LDä
♦
7ZRU]HQLHDSOLNDFMLED]GDQ\FKSU]\X\FLXRELHNWÑZGDQ\FK$FWLYH;
41.
Loop
42.
43.
End Sub
44.
</SCRIPT>
45.
46.
<HEAD>
47.
7,7/(!)RUXP8*\WNRZQLNyZ7,7/(!
48.
</HEAD>
49.
<BODY>
50.
51.
<TABLE BORDER="1" WIDTH="100%">
52.
<TR>
53.
7':,'7+ !67521*!:LDGRPRFL67521*!7'!
54.
7':,'7+ !67521*!:\VáDQ\SU]H]67521*!7'!
55.
7':,'7+ !67521*!'DWDZ\VáDQLD67521*!7'!
56.
</TR>
57.
58.
<%
59.
60.
Dim Conn
61.
Set Conn = Server.CreateObject("ADODB.Connection")
62.
63.
Conn.Open "Forum"
64.
65.
WyswietlWiadomosciPotomne 0,1
66.
67.
%>
68.
</TABLE>
69.
70.
+$/,*1 &(17(5!$+5() 1RZD:LDGRPRVFDVS!'RGDMQRZ
ÖZLDGRPRü$!+!
71.
</BODY>
72.
</HTML>
6WURQDSU]HGVWDZLRQDQDOLVWLQJXG]LDáDG]LNLZ\NRU]\VWDQLXprocedury rekuren-
cyjnej
FR R]QDF]D *H SURFHGXUD WD Z\ZRáXMH VDPD VLHELH 3URFHGXUD WD QRVL QD]Z
WyswietlWiadomosciPotomne
L ]RVWDáD ]DSLVDQD Z OLQLDFK ± 'R VWZRrzenia
FDáHMVWURQ\NRQLHF]QHMHVWSRGDQLHW\ONRGZyFKSDUDPHWUyZ3LHUZV]\]QLFKRNUHOD
dla jakiej wiado
PRFL JáyZQHM SRZLQQ\ ]RVWDü Z\ZLHWORQH ZLDGRPRFL SRWRPQH
ZDUWRüWHJRSDUDPHWUXR]QDF]D*HSRZLQLHQ]RVWDüZ\ZLHWORQ\QDMZ\*szy poziom
ZLDGRPRFL F]\OL WH NWyUH QLH PDM ZLDGRPRFL QDGU]GQ\FK 7HQ DUJXment jest
Z\NRU]\VW\ZDQ\MDNRF]üSROHFHQLD64/X*\ZaQHJRGRSRELHUDQLDZLDGRPRFL]ED
]\ SDU] OLQLH ± 'OD ND*GHM ZLDGRPRFL RGQDOH]LRQHM ÄSRQL*HM´ GDQHM
ZLDGRPRFL QDGU]GQHM IXQNFMD
WyswietlWiadomosciPotom
ne jest wy
ZRá\ZDQD
SRQRZQLH MHGQDN W\P UD]HP Z MHM Z\ZRáDQLX MDNR ZLDGRPRü QDGU]dna jest
poda
ZDQ\ LGHQW\ILNDWRU DNWXDOQHM ZLDGRPRFL OLQLD : WHQ VSRVyE SRZVWDMH
ba
UG]RQLHZLHONLIUDJPHQWNRGXNWyU\MHVWZVWDQLHREVáX*\üGRZROQLORüZLDGRPRci.
Drugi argument funkcji
WyswietlWiadomosciPotomne
VáX*\ GR NRQWURORZDQLD
ZFLQDQLD ZLDGRPRFL L RNUHOD QD MDNLP SR]LRPLH RJyOQHJR GU]HZD DNWXDOQD ZLDdo-
PRüMHVWZ\ZLHWODQD
3U]HFKRG]HQLHSRPLöG]\UHNRUGDPL
Procedura podana na listingu 11.7 przedstawia sposób wykorzystania metod obiektu
Re
FRUGVHW VáX*F\FK GR SRUXV]DQLD VL SRPLG]\ UHNRUGDPL 0HWRG\ WH SR]ZDODM QD
&]öè,,
pobranie po kolei ka
*GHJRUHNRUGX]QDMGXMFHJRVLZ]ELRU]HUHNRUGyZLZykonanie na
QLPVHULLRSHUDFML:OLQLDFK±MHVWXPLHV]F]RQDSWODNWyUDEG]LHZ\NRnywana
D*GRRVLJQLFLDNRFD]ELRUXUHNRrdów (
EOF
:ND*GHMLWHUDFMLSWOLZ\ZRá\wana,
jest metoda
MoveNext
obiektu
Recordset
FR SRZRGXMH SU]HVXQLFLH ZVND(nika do
QDVWSQHJRUHNRUGX-HOLWRSROHFHQLH]RVWDáRE\]DSoPQLDQHSRZVWDáDE\QLHVNRF]RQD
SWODJG\*QLJG\QLH]RVWDáE\RVLJQLW\NRQLHF]ELRUXUHNRrdów.
7ZRU]HQLH85/LQDSRGVWDZLHLQIRUPDFML]ED]\GDQ\FK
)XQNFMRQDOQD PR*OLZRü NOLNQLFLD QD NRQNUHWQHM ZLDGRPRFL MHVW LPSOHPHQWRZDQD
przez stwo
U]HQLHGODND*GHMZLDGRPRFL85/DSU]HND]XMFHJRMHMLGHQW\ILNDWRUGRSOL
ku
Wiadomosc.asp
=DGDQLH WR MHVW Z\NRQ\ZDQH G]LNL X*\FLX podstawienia,
ZVWDZLDMFHPXZDUWRü]H]ELRUXUHNRrGyZGRNRGX+70/ND*GHJRSRáF]HQLD=DOHFD
VL ]DFKRZ\ZDQLH MDN QDMSURVWV]HM SRVWDFL 85/OL L SU]HND]\ZDQLH GR QLFK MHG\QLH
LGHQW\ILNDWRUDOXEVáRZDNOXF]RZHJR3U]HGVWDZLRQDSRZ\*HMVWURQDZFDáRFLED]XMH
QDZLDGRPRFLDFK]DSLVDQ\FKZED]LHGDQ\FKV\VWHPXMHGQDNPXVLLVtQLHüMDNDPHto-
GDGRGDZDQLDZLDGRPRFLGRWHMED]\0HWRGDWDMHVWGRVWDUF]DQDSU]H]VWURQ
Nowa-
Wiadomosc.asp
RSLVDQ Z QDVWSQHM VHNFML NRG WHM VWURQ\ SU]HGVWDZLRQ\ ]RVWDá QD
listingu 11.8.
/LVWLQJ6WURQDVáX*FDGRWZRU]HQLDQRZ\FKZLDGRPRFL1RZD:LDGRPRVFDVS
1.
<HTML>
2.
<HEAD>
3.
7,7/(!6WZyU]QRZZLDGRPRVü7,7/(!
4.
</HEAD>
5.
<BODY BGCOLOR="#FFFFFF" TEXT="#000000">
6.
7.
<% If Request.QueryString("Type") = "Reply" Then %>
8.
+$/,*1 &(17(5!2GSRZLHG]QDZLDGRPRü+!
9.
10.
<FORM ACTION="DodajNowaWiadomosc.asp?ID=<%=
Ö
Request.QueryString('ID')%>"
11.
METHOD="POST" TARGET="_parent">
12.
<% Else %>
13.
',9$/,*1 &(17(5!&(17(5!+!1RZDZLDGRPRü+!
14.
</CENTER></DIV>
15.
16.
17.
<FORM ACTION="DodajNowaWiadomosc.asp" METHOD="POST"
Ö
TARGET="_parent">
18.
<% End If %>
19.
<TABLE BORDER="0">
20.
<TR>
21.
<TD>Temat:</TD>
22.
<TD><INPUT ID="txtSubject" NAME="txtSubject" SIZE="50"
23.
VALUE="<%= Request.QueryString("Subject") %>" ></TD>
24.
</TR>
25.
<TR>
26.
7'9$/,*1 723!:LDGRPRü7'!
27.
<TD><TEXTAREA ID="txtMessage" NAME="txtMessage" ROWS="4"
Ö
COLS="50">
28.
29.
</TEXTAREA></TD>
30.
</TR>
5R]G]LDä
♦
7ZRU]HQLHDSOLNDFMLED]GDQ\FKSU]\X\FLXRELHNWÑZGDQ\FK$FWLYH;
31.
<P><INPUT NAME="cmdSubmit" TYPE="SUBMIT"
Ö9$/8( :\OLM!QEVSQEVS
32.
,13871$0( FPG5HVHW7<3( 5(6(79$/8( :\F]\ü
Ö
formularz"></P>
33.
</TABLE>
34.
</FORM>
35.
</BODY>
36.
</HTML>
.RG SU]HGVWDZLRQ\ QD OLVWLQJX WZRU]\ SURVW\ IRUPXODU] +70/ NWyU\ PR*QD
]REDF]\ü QD U\VXQNX 3RZ\*V]D VWURQD ]DZLHUD WDN*H QLHZLHONL IUDJPHQW NRGX
$63 NWyU\ SR]ZDOD MHM IXQNFMRQRZDü ]DUyZQR MDNR IRUPXODU] VáX*F\ GR WZRU]HQLD
QRZ\FKZLDGRPRFLMDNLIRUPXODU]VáX*F\GRRGSRZLDGDQLDQDZLDGRPRFLSU]HVáDQH
do forum. Podczas odpowiadania na wiado
PRüOLQLH±PRG\ILNXM85/XPLH
szczony w parametrze
action
IRUPXODU]DGRGDMFGRQLHJRLGHQW\ILNDWRUZLDGRPRci.
7HQ SDUDPHWU ZUD] ] ]DZDUWRFL VDPHJR IRUPXODU]D SU]HV\áDQ\ MHVW GR SURJUDPX
REVáXJL
DodajNowaWiadomosc.asp
), którego kod przedstawiono na listingu 11.9.
5\VXQHN
Ten formularz
HTML gromadzi
informacje, które
SRVáX*GR
stworzenia nowej
ZLDGRPRFLIRUXP
X*\WNRZQLNyZ
6NU\SW REVáXJXMF\ RWU]\PXMH Z\QLNL ] IRUPXODU]D SU]HGVWDZLRQHJR QD U\VXQNX
i musi zapi
VDü MH Z ED]LH GDQ\FK &]\QQRFL Z\NRQ\ZDQH SU]\ GRGDZDQLX QRZ\FK
wia
GRPRFL]RVWDá\RSiVDQHZQDVWSQHMVHNFMLUR]G]LDáX
3U]HWZDU]DQLHIRUPXODU]DQRZHMZLDGRPRFL
Strona
DodajNowaWiadomosc.asp
NWyUHM NRG ]RVWDá SU]HGVWDZLRQ\ QD OLVWLQJX
GRGDMHQRZZLDGRPRüGRV\VWHPX]DFKRZXMFVLSU]\W\PZUy*Q\VSRVyE
w
]DOH*QRFLRGWHJRF]\]DSLV\ZDQDZLDGRPRüMHVW]XSHáQLHQRZDF]\WH* VWDQRZL
RGSRZLHG(/LVWLQJ]DZLHUDNRGX*\ZDQ\GRSU]HWZRU]HQLDZLDGRPRFL±F]\OLGR
dodania nowego rekordu do bazy danych.
&]öè,,
/LVWLQJ6WZRU]HQLHQRZHMZLDGRPRFLOXERGSRZLHG]LQDSRGVWDZLHZDUWRFLSU]HND]anych
parametrów (DodajNowaWiadomosc.asp)
1.
<%@ LANGUAGE=VBScript %>
2.
<HTML>
3.
<%
4.
Dim Conn
5.
Dim RSAddMessage
6.
Dim SQL
7.
8.
Set Conn = Server.CreateObject("ADODB.Connection")
9.
Set RSAddMessage = Server.CreateObject("ADODB.Recordset")
10.
11.
Conn.Open "Forum"
12.
13.
SQL = "SELECT * FROM Message Where 1=2"
14.
15.
RSAddMessage.Open SQL, Conn, 1, 2
16.
17.
RSAddMessage.AddNew
18.
RSAddMessage("Subject") = Request.Form("txtSubject")
19.
RSAddMessage("UserID") = Session("User_ID")
20.
RSAddMessage("Date") = Now()
21.
If Request.QueryString("ID") > 0 Then
22.
RSAddMessage("Parent") = Request.QueryString("ID")
23.
Else
24.
RSAddMessage("Parent") = 0
25.
End If
26.
27.
RSAddMessage("Message") = Request.Form("txtMessages")
28.
RSAddMessage.Update
29.
30.
%>
31.
32.
<HEAD>
33.
7,7/(!'RGDMZLDGRPRü7,7/(!
34.
</HEAD>
35.
36.
<BODY BGCOLOR="#FFFFFF" TEXT="#000000">
37.
38.
+$/,*1 &(17(5!7ZRMDZLDGRPRü]RVWDáDGRGDQD+!
39.
40.
<P ALIGN="CENTER"><A HREF="Forum.asp">
41.
.OLNQLMWXWDMDE\SRZUyFLüQD)RUXPX*\WNRZQLNyZ$!
42.
</BODY>
43.
</HTML>
1DMZD*QLHMV]\ VNU\SW WHM VWURQ\ ]QDMGXMH VL Z OLQLDFK ± 7HQ VNU\SW WZRU]\
QRZ\ UHNRUG SR NROHL ]DSLVXMH ZDUWRFL MHJR SyO D QDVWSQLH Z ]DOH*QRFL F]\
ZLDGRPRü MHVW RGSRZLHG]L F]\ QLH SROX ZLDGRPRFL QDGU]GQHM MHVW SU]\SLV\ZDQ\
LGHQW\ILNDWRU ZLDGRPRFL QD NWyU RGSRZLaGDP\ OXE ZDUWRü
0
. Po zapisaniu wszy-
VWNLFKZLDGRPRFLMHVWZ\ZRá\ZDQDPHWRGD
Update
ZOLQLL'RGDQDZLDGRPRü
SRMDZLVLQDOLFLHZ\ZLHWODQHMSU]H]VWURQ
Forum.asp
]DUD]SRMHMRGZLH*HQLX
7HUD] G\VSRQXMHP\ MX* ZLNV]RFL PR*OLZRFL IXQNFMRQDOQ\FK WZRU]RQHJR IRUXP
8*\WNRZQLNPR*HVL]DORJRZDüGRGDüZLDGRPRüLZ\ZLHWOLüOLVWZV]\VWNLFKGR
VWSQ\FKZLDGRPRFLFDá\F]DVEUDNXMHMHGQDNNLONXHOHPHQWyZ3RGVWDZRZ\P]QLFK
5R]G]LDä
♦
7ZRU]HQLHDSOLNDFMLED]GDQ\FKSU]\X\FLXRELHNWÑZGDQ\FK$FWLYH;
MHVWPR*OLZRüZ\ZLHWOHQLDSRMHG\nF]HMZLDGRPRFL'ROLVW\ZLDGRPRFLGRGDOLP\
MX*85/HNWyUHPDMXPR*OLZLüZ\ZLHWOHQLHZLDGRPRFLSDWU]OLQLH±OLstin-
JXMHGQDNMDNQDUD]LHQLH]RVWDáVWZRU]RQ\*DGHQNRGNWyU\E\MHREVáXJLZDá
7HNNRGMHVWVWRVXQNRZRZD*Q\GODWHJRWH*]RVWDQLHRPyZLRQ\ZQDVWpnej sekcji.
3U]HJOñGDQLHSRMHG\QF]\FKZLDGRPRFL
1D OLVWLQJX ]RVWDá SU]HGVWDZLRQ\ VNU\SW VáX*F\ GR Z\ZLHWODQLD SRMHG\QF]\FK
wiadomo
FL&]\QQRFLUHDOL]RZDQH]DSRPRF$'2QDWHMVWURQLHVWDNLHVDPHMDN
na poprzednich stro
QDFK %H] $'2 FDá\ V\VWHP QLH PyJáE\ ZLHOH ]G]LDáDü /LVWLQJ
11.10 zawiera kod strony
Wiadomosc.asp
X*\ZDQHMGRZ\ZLHWODQLDND*GHMZ\EUDQHM
ZLDGRPRFL
/LVWLQJ7DVWURQDZ\ZLHWODZLDGRPRFL]DSLVDQHZV\VWHPLHQDSRGVWDZLHSU]HND]DQego do niej
identyfikatora (Wiadomosc.asp)
1.
<HTML>
2.
<%
3.
Dim Conn
4.
Dim RSMessage
5.
Dim TheSubject
6.
Dim TheMessage
7.
Dim SQL
8.
9.
Set Conn = Server.CreateObject("ADODB.Connection")
10.
Set RSMessage = Server.CreateObject("ADODB.Recordset")
11.
12.
Conn.Open "Forum"
13.
14.
SQL = "SELECT Message.ID, " & _
15.
"Message.Subject, Message.Date, Message.Message, " & _
16.
"User.UserID, User.FirstName, User.LastName, FROM Message, User " & _
17.
"WHERE Message.UserID = User.ID AND " & _
18.
"Message.ID =" & Request.QueryString("ID")
19.
20.
RSMessage.Open SQL, Conn, 1, 2
21.
22.
If Not RSMessage.EOF Then
23.
24.
TheSubject = Server.HTMLEncode(RSMessage("Subject"))
25.
TheMessage = Server.HTMLEncode(RSMessage("Message"))
26.
ThePoster = RSMessage("FirstName") & " " & RSMessage("LastName")
27.
QueryString = "Type=Reply&ID=" & RSMessage("ID") & "&Subject=" & _
28.
Server.URLEncode(RSMessage("Subject"))
29.
30.
End If
31.
%>
32.
<HEAD>
33.
<TITLE><%= TheSubject %></TITLE>
34.
</HEAD>
35.
36.
<BODY>
37.
38.
<TABLE BORDER="0" WIDTH="100%" CELLSPACING="4" CELLPADDING="4">
39.
<TR>
40.
<TD WIDTH="100%"><STRONG><FONT FACE="ARIAL">
&]öè,,
41.
Temat: <%= TheSubject %></FONT></STRONG></TD>
42.
</TR>
43.
<TR>
44.
<TD WIDTH="100%"><STRONG><FONT FACE="ARIAL">
45.
<%= TheMessage %></FONT></STRONG></TD>
46.
</TR>
47.
<TR>
48.
<TD WIDTH="100%"><STRONG><FONT FACE="ARIAL">
49.
:\VáDQDSU]H] 7KH3RVWHU!)217!67521*!7'!
50.
</TR>
51.
<TR>
52.
<TD WIDTH="100%"><STRONG><FONT FACE="ARIAL">
53.
$+5() 1RZD:LDGRPRVFDVS" 4XHU\6WULQJ!2GSRZLHG]QDW
ÖZLDGRPRü!$!
54.
</FONT></STRONG></TD>
55.
</TR>
56.
</TABLE>
57.
58.
<P> </P>
59.
</BODY>
60.
</HTML>
.RGZ\ZLHWODMF\ZLDGRPRüMHVWSURVW\SUH]HQWXMHRQZLDGRPRüZVSRVyEF]\WHOQ\
SDWU]U\VXQHNL]DSHZQLD*H*DGQH]QDNLVSHFMDOQHQLH]DEXU]MHMZ\JOGXOLQLH
±=PLHQQHSRUHGQLHVX*\ZDQHZ\áF]QLHGRXSURV]F]HQLDNRGXVWURQ\LQLH
V NRQLHF]QH : OLQLL QD VDP\P NRFX WDEHOL VáX*FHM GR SU]HGVWDZLHQLD ZLDdo-
PRFLMHVWXPLHV]F]DQ\85/GRVWURQ\
NowaWiadomosc.asp
RPyZLRQHMZHZF]H
QLHMV]HMF]FLUR]G]LDáX:W\PZ\SDGNX]HZ]JOGXQDWR*HFKFHV]RGSRwieG]LHü
QDRJOGDQZLDGRPRüGRDGUHVX85/MHVWGRGDZDQDJUXSDSDUDPHWUyZ3U]HsyáDQ\
MHVW LGHQW\ILNDWRU ZLDGRPRFL QD NWyU RGSRZLDGDP\ MHM WHPDW RUD] SDUDPHWU
Type
X*\ZDQ\ SU]H] VNU\SW
NowaWiadomosc.asp
OLVWLQJ GR RNUHOHQLD VSRsobu
]DSLVDQLDQRZHMZLDGRPRFL
5\VXQHN
Skrypt
Wiadomosc.asp
Z\ZLHWODZ\EUDQ
ZLDGRPRü
i pozwala
X*\WNRZQLNRZLQD
odpowiedzenie na
QL
3RGVXPRZDQLHV\VWHPX)RUXP8\WNRZQLNÑZ
6WZRU]\áHMX*]QDF]QZLNV]RüDSOLNDFMLIRUXPX*\WNRZQLNyZ6\VWHPMHVWMX*SUD
wie kom
SOHWQ\QLHOLF]FNLONXPQLHM]QDF]F\FKV]F]HJyáyZNWyUH]RVWDQSU]HGsta-
ZLRQHMDNRüZLF]HQLDSRGNRQLHFWHJRUR]G]LDáX
5R]G]LDä
♦
7ZRU]HQLHDSOLNDFMLED]GDQ\FKSU]\X\FLXRELHNWÑZGDQ\FK$FWLYH;
3UDFD]HVFKHPDWDPLED]GDQ\FK
:WHMF]FLUR]G]LDáX]DMPLHP\VLSU]\NáDGHPEDUG]LHM]DDZDQVRZDQ\FKPR*OLZRFL
$'2±PHWRG
Connection.OpenSchema
.
.RU]\VWDMF]$'2 OXEMDNLHJRNROZLHNLQQHJR QDU]G]LD ED] GDQ\FK SU]HG Z\NRna-
QLHPNRGXEG]LHV]PXVLDáE\üZLDGRP\VWUXNWXU\ED]\=DSLVDQLHX*\ZDQ\FKSROH
FH64/RUD]LQQ\FKUR]ND]yZZ\PDJD]QDMRPRFLQD]ZWDEHORUD]LQQ\FKLQIRUPDFML
FR MHGQDN ]URELü MHOL EG]LHV] FKFLDá SUDFRZDü QD ED]LH NWyUHM VWUXNWXUD MHVW
G\QDPLF]QD±NWyUHMWDEHOHLSRODVFRMDNLF]DVGRGDZDQHXVXZDQHEG(]PLHQLDQH"
$'2 SRVLDGD NLOND X*\WHF]Q\FK PR*OLZRFL SR]ZDODMF\FK QD RNUHOHQLH VWUXNWXU\
ED]\GDQ\FKZWUDNFLHZ\NRQ\ZDQLDSURJUDPX0R*OLZRüSREUDQLD]ELoru rekordów
]DZLHUDMFHJR ZV]\VWNLH WDEHOH ED]\ GDQ\FK SR]ZDOD QD VWZRU]HQLH GOD SU]\NáDGX
GRUD(nego systemu wyszukiwawczego, bez konLHF]QRFL NRGRZDQLD F]HJRNROZLHN QD
VWDáH 6WURQD SU]HGVWDZLRQD QD OLVWLQJX WZRU]\ VHUL WDEHO +70/ SR MHGQHM QD
ND*GWDEHOED]\GDQ\FKGRVWSQHM]DSRPRFQD]Z\(UyGáDGDQ\FK2'%&1D]ZD
(UyGáDGDQ\FK]RVWDáD]DNRGRZDQDQDVWDáHZOLQLLMHGQDNUyZQLHGREU]HPR*QDE\
MSRELHUDü]NROHNFML
Request.Form
lub
Request.QueryString
.
/LVWLQJ3U]\NáDGDVSWZRU]\OLVWZV]\VWNLFKWDEHOED]\GDQ\FKRUD]OLVWSyOND*GHM]W\FKWDEHO
1.
<HTML>
2.
3.
<HEAD>
4.
7,7/(!3U]\NáDGRWZLHUDQLDVFKHPDWX7,7/(!
5.
</HEAD>
6.
7.
<BODY>
8.
<%
9.
Dim Conn
10.
Dim RSTables
11.
Dim RSCurrentTable
12.
Dim adSchemaTables
13.
Dim Field
14.
Dim SQL
15.
16.
adSchemaTables = 20
17.
18.
Set Conn = Server.CreateObject("ADODB.Connection")
19.
Set RSTables = Server.CreateObject("ADODB.Recordset")
20.
Set RSCurrentTable = Server.CreateObject("ADODB.Recordset")
21.
22.
Conn.Open "Forum"
23.
24.
Set RSTables = Conn.OpenSchema( adSchemaTables )
25.
26.
RSTables.Filter = "Table_Type='Table'"
27.
28.
Do While Not RSTables.EOF
29.
%>
30.
31.
<H2><%= RSTables("Table_Name" %></H2>
32.
<%
33.
SQL = "SELECT * FROM [" & RSTables("Table_Name") & "] WHERE 1=2"
&]öè,,
34.
35.
RSCurrentTable.Open SQL, Conn, 1, 2
36.
37.
For Each Field in RSCurrentTable.Fields
38.
39.
Response.Write "<H4> "
40.
Response.Write Field.Name & "</H4>" & vbcrlf
41.
42.
Next
43.
44.
RSCurrentTable.Close
45.
46.
RSTables.MoveNext
47.
Loop
48.
49.
RSTables.Close
50.
Conn.Close
51.
%>
52.
</BODY>
53.
</HTML>
Kod aplikacji
3U]\NáDGDVS
Z\NRU]\VWXMHNLONDLQWHUHVXMF\FKV]WXF]HNGRVWSQ\FK
Z $'2 3LHUZV] ] QLFK MHVW VSRVyE SREUDQLD OLVW\ WDEHO ]D SRPRF PHWRG\
Open
-
Schema()
, której wy
ZRáDQLH]RVWDáRXPLHV]F]RQHZOLQLL7DPHWRGDSRELHUDDUJX
PHQWNWyU\PPR*HE\üGRZROQDVSRUyG]QDF]QHMJUXS\ZDUWRFLLZZ\QLNX]ZUDFD
]ELyUUHNRUGyZ,VWQLHMWDN*HPR*OLZRüSRGDQLDGUXJLHJRDUJXPHQWXNWyU\SR]ZDODQD
ILOWURZDQLH]ZUDFDQ\FKUH]XOWDWyZ=ZUDFDQHPRJE\üEDUG]RUy*QHLQIRUPDFMHSR
F]ZV]\RGLQGHNVyZDVNRF]\ZV]\QDZL]DFKLQWHJUDlQRFLQLHPQLHMMHGQDNZW\P
SU]\NáDG]LHVNRQFHQWUXMHP\XZDJZ\áF]QLHQD]ZUyFHQLXWDEHO:DUWRüSU]HND]DQD
jako argument –
20
, zapisana w zmiennej
adSchemaTables
±SRZRGXMH*HPHWRGD
OpenSchema()
]DZUyFL]ELyUUHNRUGyZ]DZLHUDMF\ZV]\VWNLHWDEHOHED]\=HZ]JO
GXQDIDNW*H]ZUyFRQH]RVWDQWDN*HLQIRUPDFMHRZLHOXWDEHODFKV\VWHPRZ\FKNWyUH
ZZLNV]RFLZ\SDGNyZQLHEGSRWU]HEQHOLQLDZ\NRU]\VWXMHILOWURJUDQLczaMF\
zwracany zbiór rekordów, tylko do standardowych tabel bazy danych. To przefil-
WURZDQLHZ\QLNyZPRJáRE\]RVWDü]UHDOL]RZDQHWDN*HSRSU]H]SRGDQLHGUXJLHJRDUJX
PHQWXZZ\ZRáDQLXPHWRG\
OpenSchema()
.
3RSU]HILOWURZDQLX]ELRUXUHNRUGyZSWODOLQLH±DQDOL]XMHND*G\]UHNRUGyZ
D QDVWSQLH RWZLHUD ]ELyU UHNRUGyZ OLQLD Z\NRU]\VWXMF SU]\ W\P QD]Z WDEHOL
umie
V]F]RQ Z
RSTables
1DVWSQLH SRELHUDQH V SR NROHL ZV]\VWNLH HOHPHQW\
kolekcji
Fields
obiektu
Recordset
, na podstawie których jest tworzona lista kolumn
GDQHM WDEHOL 3U]HGVWDZLRQ\ NRG PR*H ]oVWDü ] áDWZRFL ]PRG\ILNRZDQ\ L Z\NR
U]\VWDQ\GRUy*Q\FKFHOyZ
3RGVXPRZDQLH
&HOHP $63 MHVW QLHPDO Z\áF]QLH SU]HQLHVLHQLH LQIRUPDFML ] ED] GDQ\FK QD VWURQ\
:::WHQFHOMHVWUHDOL]RZDQ\]DSRPRF$'2&RZLFHM$'2EDUG]RV]\ENRVWDMH
VLSRSXODUQ\PQDU]G]LHPREVáXJLED]GDQ\FKZ\NRU]\VW\ZDQ\PZZLHOXLQQ\FKUR
5R]G]LDä
♦
7ZRU]HQLHDSOLNDFMLED]GDQ\FKSU]\X\FLXRELHNWÑZGDQ\FK$FWLYH;
GRZLVNDFKSURJUDPLVW\F]Q\FKZW\PWDN*HZ9LVXDO%DVLFX:W\PUR]G]LDOHQDXF]\
áHVLZ\NRU]\VW\ZDü$'2LSUDFRZDü]ED]DPLGDQ\FKWZRU]FSU]\RND]MLV\VWHP
IRUXPX*\WNRZQLNyZ7ZRU]FWHQSU]\NáDGSR]QDáHRELHNW\
Connection
,
Command
oraz
Recordset
.
3\WDQLDLRGSRZLHG]L
'ODF]HJR QLHNWyUH ] SU]\NáDGyZ SU]HGVWDZLRQ\FK Z W\P UR]G]LDOH X*\ZDM
NU\WHULyZNWyUHQLJG\QLH]RVWDQVSHáQLRQHWDNLFKMDN
WHERE 1=2
)?
'RGDMF UHNRUG\ GR WDEHOL SU]\ Z\NRU]\VWDQLX PHWRG\ $GG1HZ ]ELyU UHNRUGyZ
mu
VL]RVWDüRWZRU]RQ\QDGDQHMWDEHOL=DGDQLHWRPRJáRE\VSHáQLüND*GH]DS\WDQLH
ED]XMFHQDZ\EUaQHMWDEHOLMHGQDNQLHFKFHV]DE\]DS\WDQLH]ZUDFDáRMDNLHNROZLHN
Z\QLNLJG\*QLHVRQHSRWU]HEQH8*\ZDMFZDUXQNXWDNLHJRMDN
1=2
PR*HV]E\ü
SHZQ\*HQLH]RVWDQ]ZUyFRQH*DGQHZ\QLNLJG\*ZDUXQHNWDNLQLJG\QLH]RVWDQLH
VSHáQLRQ\1LHPQLHMMHGQDN]ELyUUHNRrdów zostanie otworzony na wybranej tabeli.
.LHG\PR*QDX*\ZDüNROHNFML
Fields
obiektu
Recordset
?
Kolekcja Fields pozwala na operowanie na wszystkich polach tabeli jako elemen-
WDFKJUXS\0R*HV]MHMX*\ZDüMHOLFKFHV]SREUDüSRNROHLZV]\VWNLHMHMHOHPHQW\
i
Z\NRQDüQDQLFKWDNLHVDPHRSHUDFMH
'ODF]HJRZVNU\SWDFK$63QLHPR*QDX*\ZDü'$2"
:U]HF]\ZLVWRFLPR*QD$'2QLHMHVWMHG\Q\PQDU]G]LHPREVáXJLED]GDQ\FKMD
kie
JRPR*HV]X*\ZDüZVNU\SWDFK$63:\NRU]\VW\ZDüPR*QDQLHPDOZV]\VWNLH
na
U]G]LDSU]yVWRVRZDQHGRSUDF\Z9LVXDO%DVLFLHPMHGQDNZZLNV]RFLZ\SD
GNyZQLHEGRQHSU]yVWRVRZDQHGRSUDF\ZURGRZLVNXVNU\SWRZ\PG]LDáDMF\P
po stronie serwera. DAO wyko
U]\VW\ZDQHZDSOLNDFMDFK$63EG]LHG]LDáDüSRSUD
ZQLHMHGQDNHIHNW\ZQRüG]LDáDQLDEG]LH QL*V]DQL*ZSU]\SDGNX Zykorzystania
$'2DREFL*HQLHVHUZHUD±ZLNV]H
$UJXPHQW\ Z\ZRáDQLD PHWRG\
Recordset.Open
PR*QD RNUHOLü SRSU]H]
SU]\SLVDQLH ZDUWRFL RGSRZLHGQLP ZáDFLZRFLRP RELHNWX
Recordset
. Która
z tych metod jest lepsza?
2ELHPHWRG\VUyZQLHGREUH7HRUHW\F]QLHZLFHMF]DVXPR*H]DMüSU]\SLV\ZDQLH
war
WRFL ZáDFLZRFLRP MHGQDN MHVW WR Z\áF]QLH NZHVWLD HIHNW\ZQRFL G]LDáDQLD
2NUHODQLHSoszczególQ\FKZáDFLZRFLMHVWU]DG]LHMVWRVRZDQHOHF]EDUG]LHMF]\WHOQH
:DUV]WDW
3\WDQLD NZL]RZH RUD] üZLF]HQLD PDM VáX*\ü SRSUDZLHQLX ]UR]XPLHQLD RPDZLDQ\FK
]DJDGQLH 2GSRZLHG]L QD S\WDQLD ]QDOH(ü PR*QD Z GRGDWNX $ SW Ä2GSRZLHG]L QD
S\WDQLD´2GSRZLHG]LQD üZLF]HQLDPR*QD]QDOH(ü QD ZLWU\QLH ::: :\GDZQLFWZD
HELION.
&]öè,,
.ZL]
1.
.WyUH]SRQL*V]\FKPHWRGVPHWRGDPLRELHNWX5HFRUGVHW"
D
Open
E
Execute
F
Seve
G
Close
2.
-DNLRELHNWXGRVWSQLDNROHNFM
Parameters
?
3.
Jaka jest rola kolekcji
Properties
?
4.
3UDZGD F]\ IDáV] :áDFLZRü
Recordset.Recordcount
zawsze zwraca
SRSUDZQLORüUHNRrdów.
5.
-DNLHGZLHU]HF]\SRZLQLHQHVSUDZG]LüDE\XSHZQLüVL*H]ELyUUHNRUGyZ
MHVWFDáNRZLFLHSXVW\"
6.
Jakiej metody obiektu
Connection
PR*HV]X*\üDE\Z\NRQDüQDED]LHGD
nych polecenie SQL?
7.
&RSRZRGXMHSRQL*V]DOLQLDNRGXSU]\]DáR*HQLX*H&RQQMHVWRELHNWHPW\SX
Connection:
Conn.Open "DNS=FooBar;uid=Fredzio;pwd=Bolo"
8.
3UDZGDF]\IDáV]-HOLRWZRU]\V]WU]\]ELRU\UHNRUGyZ]DND*G\PUD]HPX*\
ZDMF GR WHJR W\FK VDP\FK LQIRUPDFML R SRáF]HQLX ]DPLDVW RELHNWX
Con
-
nection
WR]ELRU\WHX*\MWHJRVDPHJRSRáF]HQLD
çZLF]HQLD
1.
Do strony
Forum.asp
GRGDMVNU\SWNWyU\]PXVLX*\WNRZQLNyZGR]DORgowa-
QLDVLGRV\sWHPXMHOLMHV]F]HWHJRQLH]URELOL
2.
3U]\NáDG V\VWHPX IRUXP X*\WNRZQLNyZ QLJG\ QLH XGRVWSQLá X*\WNRZQLNRP
PR*OLZRFLXVuZDQLDVZRLFKZáDVQ\FKZLDGRPRFL'RGDMWDNPR*OLZRüGR
strony
Wiadomosc.asp
]DSHZQLDMFMHGQRF]HQLHDE\ZLDGRPRüPyJáXVX
QüW\ONRWHQX*\WNRZQLNNWyU\MVWZoU]\á
3.
3\WDQLH NZL]RZH QXPHU ]DZLHUD Z\ZRáDQLH PHWRG\
Open
obiektu
Con
-
nection
. Zapisz ten sam kod na dwa inne sposoby.