Esittely latautuu. Ole hyvä ja odota

Esittely latautuu. Ole hyvä ja odota

4.2-Sulautettu SQL Teuhola 2012 255 4.2. Sulautettu (embedded) SQL Ohjelmointikielen (ns. isäntäkielen) laajennus ISO-standardi, määritelty kielille Ada,

Samankaltaiset esitykset


Esitys aiheesta: "4.2-Sulautettu SQL Teuhola 2012 255 4.2. Sulautettu (embedded) SQL Ohjelmointikielen (ns. isäntäkielen) laajennus ISO-standardi, määritelty kielille Ada,"— Esityksen transkriptio:

1 4.2-Sulautettu SQL Teuhola 2012 255 4.2. Sulautettu (embedded) SQL Ohjelmointikielen (ns. isäntäkielen) laajennus ISO-standardi, määritelty kielille Ada, C, COBOL, Fortran, MUMPS, Pascal, PL/I Nimityksiä C:n SQL-laajennukselle: –Pro*C (Oracle), –ECPG (PostgreSQL) Laajennetulle Javalle oma standardi: SQLJ Laajennettu kieli vaatii esiprosessorin eli esikääntäjän

2 4.2-Sulautettu SQL Teuhola 2012 256 Laajennetun ohjelman käsittelyprosessi Ohjelma, jossa sekä SQL:ää että isäntäkieltä Esikääntäjä Isäntäkielinen ohjelma, jossa DBMS-moduulien kutsuja Isäntäkielen kääntäjä Käännetty ohjelma, jossa DBMS-moduulien kutsuja Linkittäjä DBMS-ohjelmakirjasto Suorituskelpoinen ohjelma

3 257 SQL:n kielellinen sulauttaminen SQL-lauseiden syntaktinen erottelu isäntäkielen lauseista: –C+SQL: “EXEC SQL SELECT … FROM … WHERE …;“ –Java+SQL: #sql { SELECT … FROM … WHERE …}; Yhteiset muuttujat: –Alkavat ‘:’-merkillä SQL-lauseissa –Isäntäkielen lauseissa ilman ‘:’-merkkiä 4.2-Sulautettu SQL Teuhola 2012

4 258 Poikkeustilanteet Poikkeustilanteisiin varautuminen ja niiden käsittely asianmukaisesti ovat olennaisen tärkeä osa tietokantaohjelmointia. C-kieli: Tietokantaoperaation jälkeen tarkistettava tilakoodin (SQLCODE tai SQLSTATE) arvo, joka kertoo, miten kävi. Java: Käytetään normaalia poikkeusten sieppausta (tässä erityisesti SQLException).

5 4.2-Sulautettu SQL Teuhola 2012 259 SQLJ Javaan sulautettu SQL Kehittäjinä Oracle, IBM, Tandem, Informix ja Sybase ANSI:n ja ISO:n standardi (ISO/IEC 9075-10) Ei näytä yleistyneen käytännössä; (siksi tässä vain lyhyt esittely).

6 4.2-Sulautettu SQL Teuhola 2012 260 SQLJ: kyselyesimerkki Henkilön nimen haku henkilötunnuksella: String enimi, snimi, hetu; hetu = “123456789”; try { #sql{ SELECT Etunimi, Sukunimi INTO :enimi, :snimi FROM Henkilot WHERE Hetu = :hetu }; } catch (SQLException sqlex) { …}

7 261 SQLJ: Päivitysesimerkki Sulautetuissa lauseissa voi olla sekä Java-muuttujia että -lausekkeita, esim. osoitteenmuutos, jossa uusi osoite kysytään käyttäjältä itse kirjoitetulla funktiolla ‘kysy’: String e = “Ewert”; String s = “Kupiainen”; try { #sql { UPDATE Henkilot SET Osoite = :kysy(“Anna uusi osoite”) WHERE Etunimi = :e and Sukunimi = :s } catch (SQLException sqlex) { …} 4.2-Sulautettu SQL Teuhola 2012

8 262 SQLJ: Rivijoukon käsittely Iteraattori (tässä ns. named iterator), esim. #sql public iterator HenkiloIter(String hetu, String nimi); määrittelee automaattisesti iteraattoriluokan HenkiloIter, jolla on metodit –Boolean next() –String hetu() –String nimi() –void close()

9 263 SQLJ: Rivijoukon käsittely (jatk.) Iteraattorin käyttöesimerkki: Tietyllä paikkakunnalla asuvien henkilöiden listaus String os = kysy(“Anna paikka jonka henkilöt listataan”); try { #sql iterator HenkiloIter(String hetu, String nimi); HenkiloIter h = null; #sql h = { SELECT hetu, nimi FROM Henkilot WHERE paikka = :os }; while h.next() { System.out.println(h.hetu() + ” “ + h.nimi() + …); } h.close(); } catch (SQLException sqlex) { …} 4.2-Sulautettu SQL Teuhola 2012

10 SQLJ: Esim. palkankorotusiteraattori // Eri henkilöille voi tulla erisuuri korotus. try { #sql iterator UpdateIter implements sqlj.runtime.ForUpdate (String hetu, int palkka); UpdateIter ui = null; #sql ui = { SELECT * FROM Henkilot }; while (ui.next()) { int koro = kysy(“Mikä korotus henkilölle ” + ui.hetu()); #sql {UPDATE Henkilot SET palkka = palkka + :koro WHERE CURRENT OF :ui }; } ui.close(); } catch (SQLException sqlex) { …} // Yleinen SQL-poikkeus 4.2-Sulautettu SQL Teuhola 2012 264

11 4.2-Sulautettu SQL Teuhola 2012 265 SQLJ vs. ohjelmointirajapinta (JDBC) Vaihtoehtoisia tekniikoita SQLJ periaatteessa tehokkaampi (käännösaikainen jäsennys ja optimointi), mutta monet esikääntäjät generoivat JDBC-kutsuja. SQLJ staattinen, JDBC dynaaminen. SQLJ-ohjelmat lyhyempiä ja (ehkä) helpompia laatia.

12 4.2-Sulautettu SQL Teuhola 2012 266 Yhteenveto sulautetusta SQL:stä Perinteinen vaihtoehto tietokantasovellusten toteuttamiseen. Isäntäkieli antaa ohjelmointiympäristön, mutta SQL:n sovitus hieman kankeaa. Useampia standardeja, osittain riippuen isäntäkielestä (C, Java, …). Tässä kurssissa tarkastelu oli esimerkinomainen.


Lataa ppt "4.2-Sulautettu SQL Teuhola 2012 255 4.2. Sulautettu (embedded) SQL Ohjelmointikielen (ns. isäntäkielen) laajennus ISO-standardi, määritelty kielille Ada,"

Samankaltaiset esitykset


Iklan oleh Google