SQL - Tietokannan ylläpito. SQL - Tietokannan ylläpito. SQL - Tietokannan ylläpito. SQL - Tietokannan ylläpito. SQL - Tietokannan ylläpito



Samankaltaiset tiedostot
EXEC SQL BEGIN DECLARE SECTION

Insert lauseella on kaksi muotoa: insert into taulu [(sarakenimet)] values (arvot)

Helsingin yliopisto, TKTL Tietokantojen perusteet, k 2000 Tietokantaohjelmointi Harri Laine 1. SQL:n käyttö ohjelmissa

select tulostietomäärittely from taulukkeet [where valintaehdot] [group by ryhmitystekijät] [having ryhmärajoitteet] [order by järjestysperusta]

Helsingin yliopisto, tktl DO Tietokantojen perusteet, kevät 2000 SQL- osa Harri Laine 1. SQL-yhteenvetofunktiot. SQL-yhteenvetofunktiot

Tietokantojen perusteet, syksy 1999 SQL- osa Harri Laine 1. SQL-yhteenvetofunktiot. SQL-yhteenvetofunktiot

Helsingin yliopisto, tktl DO Tietokantojen perusteet, kevät 2000 SQL- osa Harri Laine 1. SQL-yhteenvetofunktiot. SQL-yhteenvetofunktiot

Johdanto Javaan ja tietokantojen käsittelyyn Java Database Connectivity (JDBC)

RDBMS - Yhteyskäytännöt

Java ja tietokannan käsittely (JDBC)

Kyselyn yleisrakenne:

Harjoitustehtävä 1. Harjoitustehtävä 2. Harjoitustehtävä 2. Harjoitustehtävä 2. Harjoitustehtävä 2. SQL kysely

Proseduurit, funktiot ja herättimet - esimerkkeinä Oracle, SQL Server, MySQL ja OCELOT. Jouni Huotari S2008

PROSEDUURIT, FUNKTIOT JA HERÄTTIMET - ESIMERKKEINÄ ORACLE, SQL SERVER, MYSQL JA OCELOT JOUNI HUOTARI K2009

SQL-perusteet, SELECT-, INSERT-, CREATE-lauseet

Tietokantojen perusteet, syksy 1999 SQL- osa Harri Laine 1. SQL-valintaehto. SQL-valintaehto. Opettajien nimet: Opiskelijoiden pääaineet

Helsingin yliopisto, TKTL Tietokantojen perusteet, k 2000 SQL- osa Harri Laine 1. SQL-valintaehto. SQL-valintaehto.

SQL - STRUCTURED QUERY LANGUAGE

Kirjasto Relaatiotietokannat Kevät Auvinen Annemari Niemi Anu Passoja Jonna Pulli Jari Tersa Tiina

HSMT Tietokannoista. Ville Leppänen. HSMT, c Ville Leppänen, IT, Turun yliopisto, 2008 p.1/32

TIEDONHALLINTA - SYKSY Luento 11. Hannu Markkanen /10/12 Helsinki Metropolia University of Applied Sciences

Yhteenvetofunktiot Näkymät Tietokannan ylläpito Tietokantatapahtumat... 88

TIETOKANTOJEN PERUSTEET MARKKU SUNI

Tehtävä 1. Tietojen lisääminen, poistaminen, päivittäminen ja tulostaminen

6 WWW-tietokantasovellukset Relaatiotietokannan suunnittelusta 134

HELIA 1 (15) Outi Virkki Tietokantasuunnittelu

määritellä ja muokata tietokantaa ja sen käyttöoikeuksia virittää tietokannan talletusrakenteita hakea tietoa tietokannasta

HELIA 1 (14) Outi Virkki Tiedonhallinta

määritellä ja muokata tietokantaa ja sen käyttöoikeuksia virittää tietokannan talletusrakenteita hakea tietoa tietokannasta

Helsingin yliopisto/tktl Tietokantojen perusteet, s 2007 SQL:n perusteet. Harri Laine 1. SQL tietokantakieli. SQL tietokantakieli

Ohjelmistojen mallintamisen ja tietokantojen perusteiden yhteys

Tietokantojen perusteet k2004helsingin yliopisto/tktl Tietokantojen perusteet, s 2005 SQL-perusteet. Harri Laine 1. SQL tietokantakieli

HELIA TIKO-05 1 (22) ICT03D Tieto ja tiedon varastointi E.Räty, O.Virkki

SQL-kielen perusteet. Tietokantojen perusteet

Tietokannat II -kurssin harjoitustyö

käännös käännösvaiheessa tarkasettaan linkitys

Tietokannat II -kurssin harjoitustyö

3. Taulujen määrittely ja muuttaminen

CSE-A1200 Tietokannat

SELECT-lauseen perusmuoto

HAAGA-HELIA Heti-09 1 (12) ICT05 Tiedonhallinta ja Tietokannat O.Virkki Näkymät

3. TAULUJEN MÄÄRITTELY JA MUUTTAMINEN

TIETOKANNAT: MYSQL & POSTGRESQL Seminaarityö

Tiedonhallinnan perusteet. H11 Ovien ja kulun valvontajärjestelmän tietokanta

4.3.4 SQL kyselyt... 45

HELIA TIKO-05 1 (17) ICT03D Tieto ja tiedon varastointi Räty, Virkki

TIEDONHALLINTA - SYKSY Luento 8. Saapumisryhmä: Pasi Ranne /9/13 Helsinki Metropolia University of Applied Sciences

Tällä viikolla. Kotitehtävien läpikäynti Aloitetaan Pelifirman tietovaraston suunnittelu Jatketaan SQL-harjoituksia

Tietokantakurssit / TKTL

HELIA 1 (14) Outi Virkki Tiedonhallinta

Ohjelmoinnin perusteet Y Python

Microsoft Visual Studio 2005

CSE-A1200 Tietokannat

Tietokannat. CREATE TABLE table(col1,col2,... ); Luo uuden taulun. CREATE TABLE opiskelijat(opnumero,etunimi,sukunimi);

Ohjelmoinnin jatkokurssi, kurssikoe

Helsingin yliopisto Tietojenkäsittelytieteen laitos (H.Laine) Tietokantojen perusteet. Liitteenä: Tiivistelmä SQL-syntaksista

Tietokannat. CREATE TABLE table(col1,col2,... ); Luo uuden taulun. CREATE TABLE opiskelijat(opnumero,etunimi,sukunimi);

TIEDONHALLINNAN PERUSTEET - SYKSY 2013

TIETOKANTOJEN PERUSTEET OSIO 11 MARKKU SUNI

CS-A1150 Tietokannat

4.3.1 SQL tietokanta SQL:n kirjoitusasu SQL määrittelykielenä... 36

5 SQL TIETOKANTAKIELI...33

SQL. ! nykystandardi SQL3 eli SQL'99. ! CREATE TABLE, ALTER TABLE ja DROP TABLE. ! CREATE VIEW ja DROP VIEW. ! CREATE INDEX ja DROP INDEX

Tietokannat. CREATE TABLE table(col1,col2,... ); Luo uuden taulun. CREATE TABLE opiskelijat(opnumero,etunimi,sukunimi);

Makrojen mystinen maailma lyhyt oppimäärä

Alkuarvot ja tyyppimuunnokset (1/5) Alkuarvot ja tyyppimuunnokset (2/5) Alkuarvot ja tyyppimuunnokset (3/5)

Opettajana Mika Sorsa, HAMK:n ammatillisen opettajakoulutuksen opetusharjoittelija

Tiedonhallinnan perusteet. Viikko 1 Jukka Lähetkangas

Joko tunnet nämän Oracle10g SQL:n piirteet? Kari Aalto Saariston IT

Oliosuunnitteluesimerkki: Yrityksen palkanlaskentajärjestelmä

FROM-lausekkeessa voidaan määritellä useampi kuin yksi taulu, josta tietoja haetaan: Tuloksena on taululistassa lueteltujen taulujen rivien

MUITA TIETOKANTAOBJEKTEJA NÄKYMÄT, SYNONYYMIT, INDEKSOINTI, VALTUUDET JA SYSTEEMIHAKEMISTO

List-luokan soveltamista. Listaan lisääminen Listan läpikäynti Listasta etsiminen Listan sisällön muuttaminen Listasta poistaminen Listan kopioiminen

CS-A1150 Tietokannat CS-A1150 Tietokannat / 43

Harjoitus 5 (viikko 48)

Harjoituksen aiheena on tietokantapalvelimen asentaminen ja testaaminen. Asennetaan MySQL-tietokanta. Hieman linkkejä:

Ohjelmoinnin perusteet Y Python

15. Ohjelmoinnin tekniikkaa 15.1

Tietokantojen perusteet, s 1999 SQL- osa Harri Laine 1. SQL -ohjelmistojen markkinaosuuksia SQL. SQL - historiaa. SQL - standardointi

Tuotteiden tiedot: Lisää uuden tuotteen tiedot. Muuta tai poista tuotteen tiedot. Selaa kaikkien tuotteiden tietoja.

HELIA 1 (17) Outi Virkki Tietokantasuunnittelu

Helsingin yliopisto, Tietojenkäsittelytieteen laitos Tietokantojen perusteet, , H.Laine

Sisällys. 1. Omat operaatiot. Yleistä operaatioista. Yleistä operaatioista

Muita tietokantaobjekteja. Näkymät, synonyymit, indeksointi, valtuudet ja systeemihakemisto

1. Omat operaatiot 1.1

CS-A1150 Tietokannat CS-A1150 Tietokannat / 44

815338A Ohjelmointikielten periaatteet Harjoitus 3 vastaukset

1 YLEISTÄ (KS) SQL-TRAINER - KUVAUS NYKYISESTÄ JÄRJESTELMÄSTÄ (HL,KS) JATKOKEHITYKSEN VAATIMUKSET (HL,KS)...7

Tehtävän V.1 ratkaisuehdotus Tietorakenteet, syksy 2003

Ohjelmoinnin perusteet Y Python

Sisällys. Yleistä attribuuteista. Näkyvyys luokan sisällä ja ulkopuolelta. Attribuuttien arvojen käsittely aksessoreilla. 4.2

HELIA 1 (11) Outi Virkki Tiedonhallinta

Ohjelmoinnin perusteet Y Python

2. Käsiteanalyysi ja relaatiomalli

15. Ohjelmoinnin tekniikkaa 15.1

Liitokset - haut useaan tauluun

SQL:N PERUSTEET MARKKU SUNI

TIEDONHALLINTA - SYKSY Luento 10. Hannu Markkanen /10/12 Helsinki Metropolia University of Applied Sciences

Tietokanta (database)

Java-kielen perusteet

Transkriptio:

SQL sisältää operaatiot tietokannan sisällön muodostamiseen ja ylläpitoon: insert - uusien rivien vienti tauluun delete - rivien poisto update - rivien muutos Insert lauseella on kaksi muotoa: insert into taulu [(sarakenimet)] values (arvot) tällä muodolla lisätään yksi rivi ja arvot annetaan vakioina tai vakioihin perustuvina lausekkeina insert into taulu [(sarakenimet)] kysely tällä muodolla kyselyn tulosrivit lisätään tauluun CREATE TABLE kurssi ( koodi numeric(8) NOT NULL, nimi varchar(40) NOT NULL, opintoviikot numeric(5,1) NOT NULL, luennoija varchar(12), PRIMARY KEY (koodi ), FOREIGN KEY (luennoija) REFERENCES opettaja) insert into kurssi values (1234, Tietokantojen perusteet,2, HLAINE ); lisää tauluun kokonaisen rivin Jos luennoijaa ei tiedetä voidaan lisäys tehdä seuraavasti: insert into kurssi values (1234, Tietokantojen perusteet,2,null); tai insert into kurssi (koodi, nimi, opintoviikot) values (1234, Tietokantojen perusteet,2); sarakeluetteloa käytetään siis silloin kun annetaan vain osa sarakkeista Jos luennoijan tunnusta ei tiedetä, voitaisiin lisäys tehdä seuraavasti (kaikki kyselyn tulosrivit lisätään): insert into kurssi select (1234, Tietokantojen perusteet, 2,opetunnus) from opettaja where nimi= Laine Harri ; Tämä toimii odotetusti, jos kannassa on vain yksi tämän niminen opettaja, muuten lisäys kaatuu avaimen yksikäsitteisyysvirheeseen, sillä lisäys epäonnistuu, jos se rikkoo eheysehtoja Kurssille Ohjelmoinnin perusteet ilmoittautuneiden opiskelijoiden siirto kurssin Java-ohjelmointi vastaaviin ryhmiin: CREATE TABLE ilmoittautuminen ( kurssikoodi numeric(8) not null, ryhmanro numeric(2) not null, opisknro numeric(5) NOT NULL, ilm_aika date NOT NULL, PRIMARY KEY (opisknro, kurssikoodi), FOREIGN KEY (kurssikoodi, ryhmanro) REFERENCES harjoitusryhma on delete cascade, FOREIGN KEY (opisknro) REFERENCES opiskelija )

Oracle-SQL:llä Insert into ilmoittautuminen select java.kurssikoodi, ryhmanro, opisknro, sysdate from kurssi java, kurssi ohpe, ilmoittautuminen where java.nimi= Java-ohjelmointi and ohpe.nimi= Ohjelmoinnin perusteet and ohpe.koodi=ilmoittautuminen.kurssikoodi; Rivien muutokset (update) update taulu set sarake1=lauseke1 [, ] [where kohteen rajausehdot] samalla kertaa voi muttaa useita sarakkeiden sisältöä, muutetaan kaikki where-ehdon täyttävät rivit jos ehto puuttuu muutetaan kaikki taulun rivit Muutetaan kurssin Java-ohjelmointi opintoviikkomäärä kolmeksi update kurssi set opintoviikot=3 where nimi= Java ohjelmointi ; Muutos epäonnistuu, jos se rikkoo eheysehtoja. Rivien poisto (delete) delete from taulu [where poistettavien rajausehdot ]; Poistetaan kaikki ehdon täyttävät rivit Jos ehto puuttuu poistetaan kaikki rivit Poisto epäonnistuu jos eheysehdot rikkoutuvat (ellei muuta ole määritelty) Poistetaan harjoitusryhmät joihin ei ole ilmoittautuneita: delete from harjoitusryhma where (kurssikoodi, ryhmanro) not in (select kurssikoodi, ryhmanro from ilmoittautuminen); Rivien siirtoa taulusta toiseen tarvitaan esimerkiksi siirrettäessä tietoja aktiivisesta taulusta historiatauluihin. Tämä suoritetaan kopioimalla (lisäämällä) rivit kohdetauluun ja sen jälkeen poistamalla ne lähtötaulusta: insert into ilmohistoria select * from ilmoittautumiset where ilm_aika< 1.1.1999 ; delete from ilmoittautumiset where ilm_aika< 1.1.1999 ;

Tietokantatapahtumalla tarkoitetaan yhtenä jakamattomana kokonaisuutena pidettävää tietokantaoperaatioiden joukkoa, esimerkiksi tilisiirto: update tili set saldo=saldo-500 where tilinumero=123456; update tili set saldo=saldo+500 where tilinumero=654321; Tkhj takaa, että tapahtuma suoritetaan kokonaan eikä vain osaa siitä (ei siis vain tililtäottoa) ulkopuoliset näkevät vain kokonaisen tapahtuman aiheuttamat muutokset (ulkopuolinen ei voi nähdä tilannetta, jossa tililtä 123456 on otettu 500 mutta tilille 654321 ei sitä ole vielä viety) tapahtuman suorituksen aikana tehdyt muutokset kantaan on peruttavissa siihen asti kunnes tapahtumaan on sitouduttu kun tapahtumaan on sitouduttu (se on valmis) muutokset jäävät pysyviksi ja näkyvät myös muille. Tapahtuma päätetään onnistuneesti komennolla commit [work] Tapahtuma voidaan päättää myös perumalla sen aikaansaamat muutokset komennolla rollback [work] Tilisiirtotapahtuma olisi kokonaisuudessaan siis update tili set saldo=saldo-500 where tilinumero=123456; update tili set saldo=saldo+500 where tilinumero=654321; commit; Järjestelmät voidaan määritellä toimimaan auto-commit tilassa, jolloin jokaiseen ylläpitooperaatioon sitoudutaan välittömästi (tällöin tilisiirtoa ei voida koota transaktioksi) Normaalitilassa tapahtumia kuitenkin kootaan commit operaatioiden avulla. Kahden commitin välissä olevat operaatiot muodostavat tapahtuman. Yritetään poistaa tyhjät harjoitusryhmät, oletetaan, että ilmoittautumisten viiteavaimeen liittyy on delete cascade -määre commit; select count(*) from ilmoittautumiset; >> 3500 << Ei ole ihan oikein delete from harjoitusryhma where ryhmanro is not null; select count(*) from ilmoittautumiset; >>> 0 <<< (oho!) rollback; select count(*) from ilmoittautumiset; >> 3500 << Tietokantaohjelmointi Tietokantaa käytetään harvoin suoraan kyselyliittymän kautta Tyypillisesti käyttö tapahtuu sovellusohjelman kautta Sovellusohjelmaa laadittaessa vaihtoehtoja tietokantakäsitettelyn toteutukseen ovat: Sulautettu SQL (embedded SQL) Ohjelmointirajapinnan (API) kautta tapahtuva käyttö Tietokannan piilottavat välikerrosohjelmistot Erityinen tietokantaohjelmointikieli

Sulautettu SQL Esikääntäjän käyttö sulautetussa SQL:ssä SQL-lauseet kirjoitetaan ohjelmoitikielen lauseiden joukoon erityisesti merkittyinä siten, että esikääntäjä ( SQL pre-compiler) osaa tunnistaa ne ja muuntaa ne kirjastooperaatioiden kutsuiksi Esikääntäjän tuottama tulostiedosto käännetään normaalikääntäjällä 2-vaiheinen käännös Esikääntäjiä saatavissa muutamille kielille, tkhj:n toimittajalta (C, Cobol, Pascal,, Java) Eristetyt SQL- lauseet ohjelmointi- kielen lauseiden lomassa (esim C+SQL) normaali käännetty kääntäjä ohjelma esi- esi- Aliohjelma- kääntäjä kirjasto Normaali ohjelmointikieli+ kirjastofunktioiden parametreiksi upotetut SQL-lauseet Esimerkki sulautetusta SQL:stä - Pascal function keskipalkka(dept:integer):real; var n: integer; psumma: integer; #include SQLCA.INC EXEC SQL BEGIN DECLARE SECTION var palkka: integer; os: integer; EXEC SQL END DECLARE SECTION Esimerkki sulautetusta SQL:stä - Pascal begin EXEC SQL DECLARE pal CURSOR FOR SELECT salary from employee where department= :os; n:=0; psumma:=0; os:= dept; EXEC SQL open pal; EXEC SQL fetch pal into :palkka; while sqlcode = 0 do begin psumma := psumma + palkka; n := n + 1; EXEC SQL fetch pal into :palkka; end; EXEC SQL close pal; if n > 0 then keskipalkka := psumma/n else keskipalkka := 0; end;. Sulautetun SQL:n käsitteitä Kursori Kyselyn vastausrivijoukon läpikäyntiin käytettävä rakenne määritellään (declare) avataan (open) = kysely suoritetaan avausheykellä voimassaolevilla muuttuja-arvoilla haetaan rivi (fetch) = edetään tulosrivijoukossa + siirretään vuoroon tulevan rivin data ohjelmamuuttujiin suljetaan (close) Sulautetun SQL:n käsitteitä Tietokantaoperaatio voi epäonnistua. Jokaisen tietokantaoperaation jälkeen on tutkittava onnistuiko operaatio sqlstate ja vanhemman standardin mukaisesti sqlcode muuttujat palauttavat virhekoodin (sqlcode=0, jos kaikki OK, muut arvot erilaisia virhekoodeja - arvot järjestelmäkohtaisia)

Rajapintakirjaston kautta tapahtuva käyttö Ohjelmointirajapinnan (API) kautta tapahtuva käyttö perustuu rajapinnan toteuttavan kirjaston käyttöön Toimittajakohtaiset kirjastot Native API esim OracleCLI = Oracle Call Level Interface Toimittajariippumattomat kirjastot esimodbc (Microsoft Open Database Connection), Java liittymäkirjasto Mahdollistavat tkhj:n vaihdon, ja useita tietokantoja samassa ohjelmassa Rajapintakirjaston kautta tapahtuva käyttö Toimittajariippumaton kirjasto vaatii kuitenkin tkhj-kohtaisen ajurin toimiakseen tietyn tkhj:n kanssa ODBC on yleisimmin käytetty liittymäkirjasto Kaikilla merkittävillä toimittajilla on tarjolla tkhjkohtaiset ODBC-ajurit. C-kieli tyylinen parametrivälitys. :n perusideat samoja kuin ODBC:n Osa ODBC:n detaljeista piilotettu tietokannankäsittelyluokkien sisään, joten käyttö on hieman yksinkertaisempaa. Java tietokantakytkentä () perustuu muutamaan keskeiseen luokkaan: DriverManager luokan palvelujen avulla otetaan käyttöön välttämätön tkhjkohtainen ajuri (erillinen toimittajalta saatava kirjasto) ja muodostetaan yhteys tietokantaan, Ajurit osaavat yleensä rekisteröidä itsensä, joten ajuriluokan lataus muistiin riittää Tässä kuitenkin rekisteröintikoodi, joka ottaa käyttöön Oracle thin-ajurin Oracle-kantaa varten DriverManager.registerdriver( new oracle.jdbc.driver.oracledriver()); Connection tietokantayhteys - tietokantaistunto yhteys ohjelman ja tietokannan välillä peruspalvelut tietokantatapahtumien käsittelyyn ja tietokantaoperaatioiden muodostukseen kaikki käsittely perustuu yhteyden olemassaoloon ja tapahtuu sen kautta yhteys tulisi lopettaa close operaatiolla kun sitä ei enää tarvita - vapauttaa resursseja DriverManager tarjoaa palvelun yhteyden luontiin Connection con = DriverManager.getConnection( jdbc:oracle:thin:@kontti.helsinki.fi:1521:ttst, info, expert ); Luo yhteyden oracle thin ajuria käyttäen portin 1521 kautta koneessa kontti.helsinki.fi olevaan ttstnimiseen tietokantaan käyttäen käyttäjätunnusta info ja salasanaa expert. Statement Mekamismi operaatioiden välittämiseen tietokannanhallintajärjestelmälle ja vastausten palauttamiseen takaisin ohjelmalle palveluja mm. executequery - kyselyjen suoritukseen executeupdate - muihin operaatioihin Connection tarjoaa palvelun Statement olion luontiin

ResultSet Kyselyn vastaukset ja niiden käsittely Vastaa sulautetun SQL:n kursori käsitettä Statement.executeQuery luo ResultSet olion operaatiolle annetaan kysely merkkijonoparametrina Statement stmt= con.createstatement(); ResultSet rs= stmt.executequery( select nimi, osoite, palkka from henkilo ); Vastauksen käsittely ResultSet:n metodeilla Totuusarvoinenfunktio next() aktivoi vastauksen seuraavan rivin. Funktio saa arvokseen true, jos tällainen rivi on olemassa. Ensimmäisellä kutsukerralla aktivoituu ensimmäinen rivi. Perinteisesti vastausjoukkoa on voinut käydä läpi vain yhteen suuntaan: alusta loppuun uudemmissa versioissa on myös muita mahdollisuuksia Tiedon saamiseksi aktivoidulta vastausriviltä ohjelman käyttöön on tarjolla tietotyyppikohtaiset hakufunktiot gettyyppi esim. getstring, getboolean, getint, getdate,. Näille funktioille annetaan parametrina joko sarakkeen nimi tai sarakkeen järjestysnumero esim: String a= rs.getstring( osoite ); // sarake osoite Int p= rs.getint(3); // kolmas sarake Hakufunktiot kykenevät tekemään joitakin tietotyyppikonversioita, esim. merkkijonosta kokonaisluvuksi (jos kyseessä on kokonaisluku) tai päinvastoin. - Ellei konversio onnistu, aiheutetaan SQLException poikkeus - Sama poikkeus aiheutetaan myös muissa virhetilanteissa Tyhjäarvon testaamista varten on totuusarvoinen funktio wasnull. Tämä on parametroitu kuten getfunktiot. Statement stmt= con.createstatement(); ResultSet rs= stmt.executequery( select nimi, osoite, palkka from henkilo + order by nimi ); while (rs.next()) { System.out.println(rs.getString(1) +, + rs.getstring(2)+, +rs.getstring(3)); } tulostaa muotoa : Lahtinen Kalle, Katu 6, 12000 Mäki Manu, Kuja5, 20000 Tietokannan sisältöä tai rakennetta muuttavat sql-operaatiot, jotka eivät tuota vastausta suoritetaan Statement.executeUpdateoperaatiolla. esim. Int muutettujariveja= stmt.executeupdate( update henkilo + set palkka= palkka + 10000 + where nimi= Laine Harri );

Parametroidut operaatiot: Edellä on käsitelty yksinkertaisia tapauksia, joissa operaatio annetaan sellaisenaan suoritusfunktion parametrina. Usein kuitenkin samaa operaatiorunkoa käytetään uudelleen, mutta siten, että parametriarvot muuttuvat - esim. käyttäjältä kysytään henkilön nimi ja sitten kannasta haetaan tiedot tämän perusteella Tähän tarkoitukseen on tarjolla parametroitu operaatio PreparedStatement (Statement luokan aliluokka) PreparedStatement pst = con.preparestatement( select nimi,osoite,palkka + from henkilo + where nimi like? ); Parametrin arvon asetukseen on käytössä tietotyyppikohtaiset asetusmetodit settyyppi (getfunktioita vastaten) Asetusmetodilla on kaksi parametria: SQL-operaation parametrin (kysymysmerkin) järjestysnumero ja tilalle tuleva arvo esim. pst.setstring(1, Möttö% ); DriverManager registerdriver external driver getconnection createstatement Statement Connection preparestatement PreparedStatement executequery setxxxx next ResultSet getyyyy