8. ASP med databasekopling, del I



Like dokumenter
9. ASP med databasekopling, del II

10. ASP og SQL Innledning Recordset-objektet. Innhold. Referanse til læreboka Kapittel Se detaljer nedenfor.

12. Et større ASP-eksempel Innledning Beskrivelse av nett-butikken. Innhold

Introduksjon til fagfeltet

Å bruke Java API-et til å sortere tabeller/arraylister der elementene er (referanser til) objekter

1. SQL datadefinisjon og manipulering

1. Relasjonsmodellen Kommentarer til læreboka

Transaksjonshåndtering. Skalerbarhet.

Datamodellering og databaser SQL, del 2

Oppgaver Oppgave a: Sett opp mulige relasjoner

som blanker skjermen (clear screen). Du får en oversikt over alle kommandoene ved å skrive,

Bygg et Hus. Steg 1: Prøv selv først. Sjekkliste. Introduksjon. Prøv selv

1. Innføring i bruk av MySQL Query Browser

Blindpar. Tilfeldig bordplassering. Sittepar, flyttepar og turneringsledere. Skriv ut startliste. Turneringsmeny

HØGSKOLEN I SØR-TRØNDELAG

Datamodellering og databaser SQL, del 2

Datamodellering og databaser SQL, del 2


EKSAMEN. Emne: Webprogrammering med PHP (kont.) Webprogrammering 1 (kont.) Eksamenstid:

Hvordan hente ut listen over et hagelags medlemmer fra Hageselskapets nye portal

Datamodellering 101 En tenkt høgskoledatabase

En lett innføring i foreninger (JOINs) i SQL

HØGSKOLEN I SØR-TRØNDELAG

Oppdatering av person/studentforekomster i FS mot folkeregisteret

Hvordan lage etiketter med hagelagmedlemmers navn og adresse. For Office 2007 eller 2010 Av Ole Petter Vik, Asker Versjon

KOMME I GANG 2. Logge på 2. I redigeringsvinduet 3 OVERSIKT OVER KNAPPENE SOM LIGGER ØVERST I REDIGERINGSVINDUET 5

2. Beskrivelse av installasjon av SQL Server 2005 og hvordan lage databasen som trengs av administrasjonsprogrammet:

1. Å lage programmer i C++

HØGSKOLEN I SØR-TRØNDELAG

KOMME I GANG 3. Logge på 3. I redigeringsvinduet 4 OVERSIKT OVER KNAPPENE SOM LIGGER ØVERST I REDIGERINGSVINDUET 6

Oblig 4Hybelhus litt mer tips enn i oppgaven

Næringsregner på PC n versjon 1.1.0

Lotus Traveler - Manual for installasjon

En enkel lærerveiledning

Generelt om Rapporter

Inf109 Programmering for realister Uke 5. I denne leksjonen skal vi se på hvordan vi kan lage våre egne vinduer og hvordan vi bruker disse.

RUTEPLANLEGGINGSSYSTEM BRUKERVEILEDNING

Tabeller og enkle spørringer

Utplukk og sortering. Innhold

Hvor i All Verden? Del 2 Erfaren Scratch PDF

Videregående programmering 6

HØGSKOLEN I SØR-TRØNDELAG

Grunnkurs i. Windows Utforsker. Nordre Land kommune IKT-avdelingen

MySQL-database, php. Innhold. 8 MySQL-database, php. 8.1 Databasen MySQL

1. SQL server. Beskrivelse og forberedelse til installasjon

Hvordan gjøre fjernhjelp til noen som ønsker hjelp med Hageselskapets portal? Av Ole Petter Vik, Asker Versjon

INF1300 Introduksjon til databaser

Kjøre Wordpress på OSX

Mattespill Nybegynner Python PDF

JavaScriptbibliotek. Introduksjon MVVC. Informasjonsteknologi 2. Gløer Olav Langslet Sandvika VGS

Oppgave 1 (Opprett en database og en tabell)

FRC-Feeder-E. Et sikkert og raskt verktøy for overføring av data til File Record Converter Versjon 1.11

FriBUs medlemsregister

Kom i gang med emedia

Focusportal brukerveiledning hovedleder SØNDAGSSKOLEN NORGE

FRC-Feeder-E. Et sikkert og raskt verktøy for overføring av data til File Record Converter Versjon 1.9

Kursdeltakere som ønsker å bruke leksjonene f.eks til undervisning eller kursformål må ta direkte kontakt med forfatter for nærmere avtale.

Fullstendig ytelsesbehandling

FriBUs medlemsregister

Databaser: Relasjonsmodellen, del I

HØGSKOLEN I SØR-TRØNDELAG Avdeling for informatikk og e-læring - AITeL

1. Å lage programmer i C++

Systemadministrasjon i KF Infoserie en brukerveiledning for lokale administratorer

Bli Kjent med Datamaskinen Introduksjon ComputerCraft PDF

2. Beskrivelse av mulige prosjektoppgaver

Øvingsforelesning TDT4105

Utvikling av dynamiske nettsteder med PHP og databaser, høsten 2006

ebudbok Elektronisk budbok på PDA Registrering av gangrekkefølge på web

Tre på rad mot datamaskinen. Steg 1: Vi fortsetter fra forrige gang. Sjekkliste. Introduksjon

Småteknisk Cantor Controller installasjon

Høgskolen i Telemark EKSAMEN 6102 DATABASER Tid: Hjelpemidler: Vedlegg: Eksempeldata til oppgave 1

GAB INNSYN... 1 INNSTILLINGER... 1 Database... 1 Søk... 4 GENERELT... 5 Søkeutvalg... 5 GAB menyen... 6 VIS MENYEN... 6 Generelt...

the web Introduksjon Lesson

1. Finn klassene (hvilke objekter er det i problemet) 1. Dataene som beskriver problemet (hvilke objekter har vi og hvor mange klasser er det?

Bruk av NetBeans i JSP-delen av Web-applikasjoner med JSP og JSF

Hvor og hvordan lagrer du mediafilene dine?

Enkle generiske klasser i Java

OPPRETTELSE OG VEDLIKEHOLD AV ÅRSKLASSENES HJEMMESIDER

Åsveien 9, 3475 Sætre Telefon: Mobiltelefon: Faks: E-post:

2 Om statiske variable/konstanter og statiske metoder.

1. Hent NotaPlan Online Backup på 2. Trykk på Download i menyen og på Download i linjen med Notaplan Backup

7. Datafiler på tjenersiden

Hvordan å lage og publisere ditt personlige visittkort

Demoversjon. Installasjon Uni Økonomi V3. - økonomisystemer fra start til børs

HR analysen. Ny versjon Brukermal. Administratorer

>>21 Datamodellering i MySQL Workbench

Lagring i Linux. 1. Hvordan lagre tekst. Når du er ferdig med heftet skal du:

OKOK DataPower Learning AS Administrasjon 1

Brukerstøtte trinn-for-trinn. Slik bruker du TwinSpace

versjon 1.1 Brukermanual

Databaser kort intro. Tom Heine Nätt

Eksamen i Internetteknologi Fagkode: ITE1526

King Kong Erfaren Scratch PDF

1. Tilstandsinformasjon på klientsiden

HØGSKOLEN I SØR-TRØNDELAG

Vanlige spørsmål om EndNote (april 2013)

Romlig datamanipulering

Oppgave 3 - normalisering

INF1300 Introduksjon til databaser

Installere programvare gjennom Datapennalet - Tilbud

Transkript:

Else Lervik 16.03.2004 Opphavsrett: Forfatter og Stiftelsen TISIP Lærestoffet er utviklet for faget LV192D Web-programmering med ASP 8. Resymé: Leksjonen begynner med en generell introduksjon til databaser og databasesystemer. Vi lager en enkel ASP der vi viser fram innholdet i en databasetabell. Vi bruker både Recordset-objektet og SQL. Innhold 8.1. INNLEDNING... 1 8.2. HVA ER EN DATABASE?... 2 8.3. Å BRUKE ET DATABASESYSTEM... 4 8.4. Å SETTE OPP EN ODBC-KOPLING MOT EN DATABASE... 5 8.5. DEN FØRSTE DATABASE-ASP... 5 8.6. BRUK AV SQL FOR Å TILPASSE INNHOLDET I RECORDSET-OBJEKTET... 7 Referanse til læreboka Leksjonen dekker kapittel 15 og 16 i boka. I tillegg tar vi med litt om SQL. 8.1. Innledning Dette er den første leksjonen om databaser. Resten av dette kurset handler om hvordan vi kan bruke ASP til å gjøre det mulig for web-klienter å kommunisere med databaser på tjenersiden. Dette er et stort tema, og det forutsetter at mesteparten av det vi har gjennomgått hittil er på plass. Dette kurset forutsetter ikke at du kan noe om databaser fra før. Du vil kun jobbe med ferdige databaser, og i den grad du trenger å bruke spørrespråket SQL, blir setningene oppgitt. Når det er sagt, må jeg skynde meg å føye til, at du, for å kunne lage database-applikasjoner i ASP trenger å kunne en del om databaser. Databaser som fag består i hovedsak av to emner: Hvordan bygge opp en database ( datamodellering ), og hvordan kommunisere med databasen via SQL. Nettfaget LO323D Databaser dekker begge disse emnene (http://aitel.hist.no/fag/dbs/). Vi forutsetter at du bruker Microsoft Access som databasesystem. Via ODBC kan vi imidlertid bruke ASP mot nesten et hvilket som helst databasesystem. Vi vil, så langt det er mulig, lage ASP ene vår uavhengig av databasesystem.

8.2. Hva er en database? I forrige leksjon lagret vi data på filer. Dette gjorde det mulig å oppbevare data også dersom web-tjeneren gikk ned. Tenk på store datamengder, for eksempel opplysninger om kunder og poliser i et forsikringsselskap. Disse kan lagres på tekstfiler, men det er ikke videre praktisk. Data av denne typen skal ikke bare lagres og hentes ut fortløpende, man trenger å endre på allerede innlagte data (Kari Vik har skiftet adresse), man trenger å hente ut data som er satt sammen på bestemte måter ( Finn alle polisene til Ole Hansen. ), og det er også viktig at man ikke mister store datamengder dersom disken ødelegges. Funksjonalitet av denne typen (og mye, mye mer) er det vi finner i databasesystemer. Et databasesystem er programvare som lar oss håndtere data (lagre, finne igjen, endre og slette) og som også tilbyr mekanismer for sikkerhetskopiering, adgangskontroll, transaksjonskontroll 1, med mer. Selve dataene finner vi i databaser. Med database mener vi en logisk samling med data satt sammen etter bestemte krav. Eksempler på databasesystemer er Oracle, samt SQLServer og Access fra Microsoft. Eksempeldatabasene i dette kurset er laget i Access, men som vi skal se, ASPprogrammeringen er, iallfall i teorien, uavhengig av databasesystem. Vi skal i hovedsak bruke den delen av databasesystemet som hjelper oss å håndtere data. Vi skal i denne leksjonen lage ASP er som viser fram dataene, mens vi i neste leksjon skal se på hvordan vi kan forandre på innholdet i en database. En database kan være stor, for eksempel alle kundene og polisene i forsikringsselskapet, eller den kan være liten, den kan inneholde medlemsregister for det lokale idrettslaget. Når vi skal jobbe med en database, forholder vi oss til dataene på tabellform. Medlemsregisteret kan bestå av en eneste tabell: Medlemmer Medlemsnummer Fornavn Etternavn Adresse Fødselsår 1 Kari Jensen Storgt 3 1982 2 Andreas Høyvik Kongens gt 45 1983 3 Trine Høgset Linerleveien 5 1982 4 Petter Svendsen Påfuglveien 45a 1983.osv. Men hva om vi ønsker å legge inn opplysninger om aktiviteter og trenere. Trenerne er selv medlemmer av laget. Vi kan utvide tabellen med to kolonner, en for aktivitet og en for trener. Men hva om en og samme person deltar i flere aktiviteter? Vi kan sette opp mer enn én aktivitet i en rute, da må vi også sette opp en verdi til for trener: MedlemmerMedAktiviteter Medl. nr. Fornavn Etternavn Adresse Fødselsår Aktivitet Trener (medl.nr) 1 Kari Jensen Storgt 3 1982 Fotball, junior herrer 10 1 Begrepet transaksjon er svært sentralt i databasesammenheng. det vil behandles i leksjon 11. side 2 av 8

2 Andreas Høyvik Kongens gt 45 1983 3 Trine Høgset Linerleveien 5 1982 Håndball, junior damer 4 Petter Svendsen Påfuglveien 45a 1983 Fotball, junior herrer.osv. Lagrenn, junior herrer Vi ser at dette blir mindre elegant. En databasetabell bygger faktisk på det prinsippet at vi kun har en verdi (som kan være en tekststreng) i hver rute. Kanskje Petter Svendsen deltar i en tredje aktivitet, også. Og en ting til: Mange av medlemmene deltar i samme aktivitet, de har derfor samme trener. Vi vil få mange rader der mer enn en verdi er like. Følger du tankegangen her? Det mest ryddige er å lage to tabeller til, en for aktiviteter og en for deltakelse i aktivitetene: Aktiviteter Aktivitetsnr Navn på aktivitet Trener (medlemsnr) 1 Fotball, junior herrer 10 2 Håndball, junior damer 8 osv. Her ser vi at vi har valgt å nummerere aktivitetene på tilsvarende måte som vi nummererer medlemmene. Dette gjør det langt enklere å referere til en aktivitet. Deltakelse Aktivitetsnr Medlemnr 1 2 1 4 2 3..osv Den øverste tabellen bruker medlemsnummeret for å referere til treneren. For å finne navn og adresse til treneren må man slå opp i medlemstabellen. Dette kan umiddelbart virke tungvindt, men fordelen er at personopplysningene er lagret kun ett sted. Dersom adressen endres, er det nok å forandre i medlemstabellen. Den nederste av de to tabellene er kanskje den vanskeligste av alle tre. Første kolonne inneholder nummeret på aktiviteten, andre kolonne nummeret på medlemmet. For å finne alle aktivitetene som Andreas Høyvik er med på, må man først finne medlemsnummeret hans (det er 2), deretter må man slå opp i Deltakelse-tabellen og se på alle linjene med medlemsnummer 2. Det finnes altså en rad i denne tabellen for hver aktivitet Andreas er med på. Vi legger merke til tre viktige ting når det gjelder disse tabellene: Hver rute i tabellen inneholder kun en verdi. Denne verdien kan for eksempel være et tall, en dato eller en tekst. 8 10 5 side 3 av 8

Ingen rader i en tabell er like. Den eller de kolonnene (færrest mulig!) som må ha verdi for å identifisere en rad i en tabell, kaller vi primærnøkkelen. Alle tabeller må ha en primærnøkkel, og denne eller disse kolonnene må alltid gis verdi når vi legger inn data i tabellen. (Andre kolonner kan vi tillate at er blanke, eller NULL som det heter i databasespråket.) Databasesystemet skal gi en feilmelding dersom vi prøver å legge inn flere rader med samme primærnøkkel. I tabellene over gjelder følgende: Medlemsnummer er primærnøkkel i tabellen Deltakere, mens aktivitetsnummer er primærnøkkel i tabellen Aktiviteter. I tabellen Deltakelse utgjør de to kolonnene til sammen primærnøkkelen. Dersom vi vet primærnøkkelen til en rad i tabellen, kan vi finne raden. De samme dataene lagres ikke flere ganger enn nødvendig. Vi bruker heller primærnøkkelen i en annen tabell som referanse, slik at en kan slå opp der for å finne mer data. I tabellene over har vi flere eksempler på dette. I tabellen Aktiviteter har vi brukt medlemsnummeret for å si hvem som er trener. Medlemsnummeret er primærnøkkel i medlemstabellen og gjør det mulig å slå opp der for å finne navn og adresse til treneren. I tabellen Deltakelse har vi to primærnøkler fra andre tabeller. Databasesystemet skal gi en feilmelding dersom vi for eksempel prøver å legge inn en trener som ikke er registrert som medlem. Alle database-tabeller bygges opp etter disse prinsippene. Når vi registrerer nye tabeller i databasen, må vi huske på å fortelle om primærnøklene. Det kan godt hende databasesystemet godtar at vi lager tabeller uten primærnøkkel, men det er ikke videre lurt å lage slike tabeller. Vi ser at selv noe så enkelt som et medlemsregister for et idrettslag krever (minst) tre tabeller. Det skal ikke så store organisasjonen til før antall tabeller og sammenhengen mellom disse blir kompleks. Å konstruere de tabellene som trengs i en database er som sagt et eget fag, og vi skal ikke bruke mer tid på det her. I dette kurset antar vi tabell-strukturen for gitt. Her avslutter vi en meget kort introduksjon til databaser. Se også side 485-493 i boka. Merk spesielt oversikten side 492, den viser når vi bør bruke de ulike lagringsmåtene vi har gjennomgått i dette kurset (cookies, sesjonsvariabler, applikasjonsvariabler, tekstfiler, og til slutt databaser). 8.3. Å bruke et databasesystem I dette kurset bruker vi Microsoft Access. I tilknytning til denne leksjonen finner du filen personer.mbd. Den inneholder følgende knøttlille database (kun én tabell): Figur 1: Eksempeldatabase, leksjon 8 side 4 av 8

Lagre filen på harddisken. Klikk på den i Utforsker, da blir den åpnet i Access. Dobbeltklikk på person. Da skal du få fram vinduet vist Error! Reference source not found.. Her er ID definert som primærnøkkel. Prøv å legge inn nye data i den tomme linjen. Prøv også å endre og slette data. Hva skjer dersom du prøver å legge inn et ID-nr som er registrert fra før? Opplysninger om hvert enkelt datafelt (synonym for kolonne) finner du ved å velge Vis/Utformingsvisning. Undersøk dette. 2 Se boka side 493-497 for mer om Access. 8.4. Å sette opp en ODBC-kopling mot en database Det er mulig for ASP en vår å kommunisere med en Access-database uten å gå veien om ODBC (se side 499 i boka), men vi anbefaler å bruke ODBC. Dersom vi lager en ODBC-kopling vil vi kunne referere til databasen med et enkelt navn. Vi kan flytte databasen til en annen katalog, eller til og med til et annet databasesystem og fremdeles bruke det samme navnet. Det siste er absolutt aktuelt. Vi kan bruke Access ved utvikling av databasen med ASP er og det hele. Når vi mener oss ferdige kan vi flytte den over til SQLServer eller Oracle ved kun å forandre på ODBC-koplingen. ASP ene våre forblir uforandret (vel, vi kan iallfall håpe ) Følg oppskriften side 511 for å lage en ODBC-kopling til personer-databasen. I kildekoden nedenfor har jeg kalt datakilden personer. Dersom du vil kjøre eksempelprogrammet uten å forandre på noe, må du også bruke dette navnet. 8.5. Den første database-asp Figur 2: Data hentet fra en database Figur 2 viser innholdet i person-tabellen. Du finner filen i tilknytning til denne leksjonen (Filnavnet er personer1.asp). Last den ned og lagre den der du har de øvrige ASP ene dine. 2 Access (og også mange andre databasesystem) tilbyr en mekanisme for økning av for eksempel ID-nr med 1 for hver ny rad som legges inn. Dette er en meget anvendelig funksjon, men den blir ikke brukt i dette kurset på grunn av at den ikke er standardisert på tvers av databasesystemene. Vi vil i stedet se hvordan vi kan få til det samme ved å bruke en metode som er noe mer arbeidsom, men som vil fungere for alle ulike databasesystemer. side 5 av 8

Prøvekjør! Og dette må du få til å virke før du går videre! Hvis problemer oppstår, nøl ikke med å legge ut spørsmål på news. Husk at det forutsetter at du har definert en ODBC-kopling til databasen, og at denne koplingen har (DSN-)navnet personer, se forrige kapittel Alle radene er hentet ut, men som du ser, du får dem fram i en annen rekkefølge enn i Access. Denne rekkefølgen er tilfeldig. Vi skal i innleveringsøvingen se hvordan vi kan få ut dataene sortert. Først skal vi gjennomgå kildekoden som laget utskriften over: <% ' ' Personer1.asp E.L. 2001-10-19 ' Option Explicit %> <HTML><HEAD><TITLE>Min første database-asp</title></head> <BODY BGCOLOR="wheat" TEXT="darkgreen" LINK="brown" VLINK="steelblue" ALINK="darkblue"> <H1>Personer</H1> <% Dim objdbforbindelse, objresultat ' Oppretter forbindelse til databasen Set objdbforbindelse = Server.CreateObject("ADODB.Connection") objdbforbindelse.open "dsn=personer" 'Kopierer innholdet i tabellen person til "recordsettet" objresultat Set objresultat = Server.CreateObject("ADODB.Recordset") objresultat.open "person", objdbforbindelse 'Går gjennom "recordsettet" linje for linje, og skriver linjen i nettleservinduet Do While Not objresultat.eof Response.Write objresultat("id") & " " & _ objresultat("fornavn") & " " & objresultat("etternavn") & "<BR>" objresultat.movenext() Loop 'Lukker "recordsettet" og databaseforbindelsen objresultat.close() objdbforbindelse.close() Set objresultat = Nothing Set objdbforbindelse = Nothing %> </BODY></HTML> Hva gjør vi her? Det ligner på det vi gjorde da vi skulle kommunisere med en datafil. Først må vi opprette en forbindelse til databasen, så leser vi dataene, og til slutt lukker vi forbindelsen. Litt flere detaljer: Objektene som vi bruker til å kommunisere med databasen ligger i en komponent som heter ActiveX Data Objects (ADO). Komponenten finner vi på en fil som heter msado15.dll, og den ligger i katalogen \Program Files\Common Files\System\Ado. Vi får tilgang til de ønskede data i databasen i to trinn: 1. Vi oppretter en forbindelse mellom programmet og databasen: Set objdbforbindelse = Server.CreateObject( ADODB.Connection ) objdbforbindelse.open dsn=personer side 6 av 8

Vi bruker Server-objektet til å instansiere et objekt i komponenten ADODB. Connectionobjektet har mange egenskaper og metoder, foreløpig nøyer vi oss med metoden Open. Første argument er lik dsn=personer. Dette er det navnet (DSN) vi har gitt databasen vår i ODBC-oppkoplingen. Metoden kan i tillegg ta brukernavn og passord som argument, eksempel: objdbforbindelse.open "dsn=personer", "brukernavn", "passord" 2. Vi oppretter så et Recordset-objekt for å lagre dataene i: Set objresultat = Server.CreateObject("ADODB.Recordset") objresultat.open "person", objdbforbindelse Etter å ha opprettet objektet åpner vi det og forteller hvilke data vi skal hente fra databasen. Her sier vi at vi skal hente alle dataene i tabellen person. I et praktisk tilfelle vil vi ofte begrense oss til for eksempel alle personer med etternavn som begynner på A eller med id-nr mellom 100 og 200. Hvordan vi setter slike begrensninger skal vi se senere i denne leksjonen. Open-metoden kan ta mange argumenter, se side 516 i boka. Recordset-objektet er et meget sentralt objekt i forbindelse med databaser, ja, det er så sentralt at et helt kapittel i boka er viet til dette objektet (kap. 18). Så dette kommer vi tilbake til! Nå ser vi imidlertid på den aller enkleste anvendelsen av dette objektet. Vi har kommet så langt at vi har objektet fylt med data fra databasen, og vi skal vise disse dataene fram i vinduet hos klienten. Vi forholder oss fremdeles til dataene på tabellform, og da er det en grei sak å løpe gjennom tabellen linje for linje: Do While Not objresultat.eof Response.Write objresultat("id") & " " & _ objresultat("fornavn") & " " & objresultat("etternavn") & "<BR>" objresultat.movenext() Loop På samme måte som ved lesing fra datafiler, blir det også her vedlikeholdt en intern peker som holder styr på hvor langt vi har kommet i tabellen. Egenskapen EOF settes lik True i det øyeblikket pekeren er kommet forbi siste linje i tabellen. Metoden som vi anvender på Recordset-objektet refererer direkte til denne pekeren, den sier at vi skal flytte pekeren en posisjon (en linje) fram: objresultat.movenext() Dataene er jo allerede hentet inn i minnet; de ligger som en Collection i Recordset-objektet. Vi henter dem direkte derfra på følgende måte (eksempel): objresultat( fornavn ) Til slutt frigjør vi alle ressurser og minne: objresultat.close() objdbforbindelse.close() Set objresultat = Nothing Set objdbforbindelse = Nothing Flere eksempler, se kapittel 16 i boka. 8.6. Bruk av SQL for å tilpasse innholdet i Recordset-objektet SQL (Standard Query Language) er et standardisert språk for å jobbe mot relasjonsdatabaser. Det er ikke et programmeringsspråk i vanlig forstand, det er et språk der du setter opp kravene til det resultatet du vil ha ut, så tar databaseprogramvaren seg av resten for deg. side 7 av 8

SQL inneholder kommandoer for å generere tabellene, for å hente ut, endre, lagre og slette data. Vi vil i dette kurset se eksempler på enkel bruk av språket. Det er et meget kraftig språk, og med gode kunnskaper i SQL er det nesten ingen grenser for hva du kan få til av spørringer mot en database. La oss se på et par eksempler på spørringer mot vår enkle person-database: select * from person // gir ut hele person-tabellen, ikke spesielt spennende select distinct etternavn from person // gir oss alle forskjellige etternavn select * from person where etternavn like 'P%' // alle personer med etternavn på P For å få ut resultatet fra en SQL-setning i stedet for hele tabellen må vi gjøre to ting i programmet foran: 1. Vi setter opp SQL-setningen når vi åpner Recordset-objektet, eksempel: objresultat.open "select * from person where etternavn like 'P%'", _ objdbforbindelse,,, adcmdtext Vi ser at vi bruker flere argumenter i Open-kallet: Første argument er SQL-setningen. Det er en vanlig streng-konstant, som gjerne kunne vært lagret i en streng-variabel. Andre argument er databaseforbindelsen. Tredje og fjerde argument trenger vi ikke bry oss om. Men siste argument må vi ha med: adcmdtext. Det forteller at vi sender inn en SQL-setning. adcmttext er en navngitt konstant med verdi 1. 2. Vi kan enten deklarere adcmttext-konstanten selv, eller vi kan inkludere en fil som inneholder en mengde navngitte konstanter til bruk i forbindelse med ADO. Jeg anbefaler at du gjør det siste, vi vil i tiden framover bruke mange av disse konstantene. Filen heter adovbs.inc. Du finner den i katalogen \Program Files\Common Files\System\Ado. Kopier den til rotkatalogen for ASP ene (wwwroot). Du kan da inkludere den (se side 404 i boka) i ASP en ved å skrive følgende: <!-- #include virtual = "/adovbs.inc" --> Vi kommer til å gjennomgå mer om SQL i leksjon 10. side 8 av 8