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



Samankaltaiset tiedostot
HOJ Haja-aiheita. Ville Leppänen. HOJ, c Ville Leppänen, IT, Turun yliopisto, 2012 p.1/10

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

Java ja tietokannan käsittely (JDBC)

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

Tietokannat II -kurssin harjoitustyö

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

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

RDBMS - Yhteyskäytännöt

SQL - STRUCTURED QUERY LANGUAGE

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

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

Tiedonhallinnan perusteet. Viikko 1 Jukka Lähetkangas

Mikä yhteyssuhde on?

Ohjelmistojen mallintamisen ja tietokantojen perusteiden yhteys

1 Tehtävän kuvaus ja analysointi

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

EXEC SQL BEGIN DECLARE SECTION

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

Metodien tekeminen Javalla

Listarakenne (ArrayList-luokka)

HELIA 1 (14) Outi Virkki Tiedonhallinta

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

Pedacode Pikaopas. Tietokantaa hyödyntävän sovelluksen luominen

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

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

Ohjelmointi 2 / 2008 Välikoe / Pöytätestaa seuraava ohjelma.

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

Opettajana Mika Sorsa, HAMK:n ammatillisen opettajakoulutuksen opetusharjoittelija

Ohjelmointi 2 / 2010 Välikoe / 26.3

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

Kompositio. Mikä komposition on? Kompositio vs. yhteyssuhde Kompositio Javalla Konstruktorit set-ja get-metodit tostring-metodi Pääohjelma

LINUX-HARJOITUS, MYSQL

1.3Lohkorakenne muodostetaan käyttämällä a) puolipistettä b) aaltosulkeita c) BEGIN ja END lausekkeita d) sisennystä

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

YHTEYSSUHDE (assosiation)

1.3 Lohkorakenne muodostetaan käyttämällä a) puolipistettä b) aaltosulkeita c) BEGIN ja END lausekkeita d) sisennystä

Tietokannat II -kurssin harjoitustyö

Rinnakkaisohjelmointi kurssi. Opintopiiri työskentelyn raportti

Yleistä. Nyt käsitellään vain taulukko (array), joka on saman tyyppisten muuttujien eli alkioiden (element) kokoelma.

// Tulostetaan double-tyyppiseen muuttujaan "hinta" tallennettu // kertalipun hinta ja vaihdetaan riviä. System.out.printf("%.1f euros.

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

1. Omat operaatiot 1.1

Rajapinta (interface)

T Testiraportti TR-3. ETL-työkalu

Vertailulauseet. Ehtolausekkeet. Vertailulauseet. Vertailulauseet. if-lauseke. if-lauseke. Javan perusteet 2004

Sisältö. 22. Taulukot. Yleistä. Yleistä

Ohjelmoinnin perusteet Y Python

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

Metodit. Metodien määrittely. Metodin parametrit ja paluuarvo. Metodien suorittaminen eli kutsuminen. Metodien kuormittaminen

5. HelloWorld-ohjelma 5.1

Ohjelmassa henkilön etunimi ja sukunimi luetaan kahteen muuttujaan seuraavasti:

4. Luokan testaus ja käyttö olion kautta 4.1

JAVA-PERUSTEET. JAVA-OHJELMOINTI 3op A JAVAN PERUSTEET LYHYT KERTAUS JAVAN OMINAISUUKSISTA JAVAN OMINAISUUKSIA. Java vs. C++?

HOJ J2EE & EJB & SOAP &...

20. Javan omat luokat 20.1

Sisällys. 20. Javan omat luokat. Java API. Pakkaukset. java\lang

Sisältö. 2. Taulukot. Yleistä. Yleistä

Asennusohje. Sahara-ryhmä. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op. Tietorakenneluokkia 2: HashMap, TreeMap

Olio-ohjelmointi Javalla

Hajautettujen sovellusten muodostamistekniikat, TKO_2014 Johdatus kurssiin

16. Javan omat luokat 16.1

HSMT J2EE & EJB & SOAP &...

TIETOKANNAT JOHDANTO

Sovellusarkkitehtuurit

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

812341A Olio-ohjelmointi Peruskäsitteet jatkoa

Luokat ja oliot. Ville Sundberg

Sisältö. Johdanto. Tiedostojen lukeminen. Tiedostojen kirjoittaminen. 6.2

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

HELIA 1 (11) Outi Virkki Tiedonhallinta

// Tulostetaan double-tyyppiseen muuttujaan "hinta" tallennettu // kertalipun hinta ja vaihdetaan riviä. System.out.printf("%.1f euros.

public static void main (String [] args)

TIETOKANTOJEN PERUSTEET MARKKU SUNI

Harjoitus Olkoon olemassa luokat Lintu ja Pelikaani seuraavasti:

Hakukyselyt: SELECT * FROM taulu WHERE sarake1 = Malli Nimi [WHERE sarake1 LIKE M% ] [WHERE BETWEEN ehto1 AND ehto2] [WHERE sarake1 IN/= (alikysely)]

Sisällys. 14. Poikkeukset. Johdanto. Johdanto

Sisällys. 6. Metodit. Oliot viestivät metodeja kutsuen. Oliot viestivät metodeja kutsuen

Ohjelmointi 1 / 2009 syksy Tentti / 18.12

Java UI-komponentit (JTable) Juha Järvensivu 2007

17. Javan omat luokat 17.1

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

Tietorakenteet. JAVA-OHJELMOINTI Osa 5: Tietorakenteita. Sisällys. Merkkijonot (String) Luokka String. Metodeja (public)

Luokka Murtoluku uudelleen. Kirjoitetaan luokka Murtoluku uudelleen niin, että murtolukujen sieventäminen on mahdollista.

Asennusohje. Sahara-ryhmä. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Web Services tietokantaohjelmoinnin perusteet

Ohjelmistotekniikan menetelmät, koe

CSE-A1200 Tietokannat

14. Poikkeukset 14.1

Metodien tekeminen Javalla

Sisällys. Yleistä attribuuteista. Näkyvyys luokan sisällä. Tiedonkätkentä. Aksessorit. 4.2

A) on käytännöllinen ohjelmointitekniikka. = laajennetaan aikaisemmin tehtyjä luokkia (uudelleenkäytettävyys)

Ohjelmoinnin jatkokurssi, kurssikoe

Java-kielen perusteita

Luokan sisällä on lista

Sisältö. Johdanto. Tiedostojen lukeminen. Tiedostojen kirjoittaminen. 6.2

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

Javan GUI Scratchaajalle

Transkriptio:

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

Missä mennään... 1. Johdanto (1h) 2. Säikeet (2h) 3. Samanaikaisuudesta (2h) 4. Hajautetuista sovelluksista (1h) 5. Soketit (3h) 6. RMI (2h) 7. RPC (2h) 8. Corba (2h) 9. Protollista, XML (2h) 10. WWW+Servletit (2h) 11. Tietokannoista (2h) 12. Haja-aiheita (1h) 99. Kertausluento (2h) HSMT, c Ville Leppänen, IT, Turun yliopisto, 2008 p.2/32

Luvun rakenne Tietokannan merkityksestä hajautetuissa järjestelmissä. Millainen relaatiotietokanta on? Hieman käsitteitä. Mitä operaatioita kantaan voi kohdistaa? Operaatioiden luonne. SQL Structure Query Language. JDBC Java DataBase Connectivity (API). Yhteys tietokantaan; ajurit. JDBC:hen liittyvät luokat. Esimerkkejä. Käsitellään relaatiotietokantaa. Oliotietokannat vieläkin tulossa. Ks. http://www.odbms.org/ HSMT, c Ville Leppänen, IT, Turun yliopisto, 2008 p.3/32

Merkitys haj. järjestelmissä Hajautetut järjestelmät lähes poikkeuksetta perustuvat tiedon keräämiseen ja/tai jakamiseen. Tietokanta toimii kolmikerrosarkkitehtuurin (3-tier) alimpana kerroksena. GUI pohjainen asiakassovellus palvelimen toiminnal lisuus JDBC ajuri Tietokanta soketit, RMI, HTTP,... tietokanta protokolla (SQL) HSMT, c Ville Leppänen, IT, Turun yliopisto, 2008 p.4/32

Relaatiotietokanta: käsitteitä Relaatiotietokanta on joukko tauluja. Kukin taulu koostuu riveistä jokainen rivi esittää yhtä tietokannan tietuetta. Taulun kussakin sarakkeessa on joka rivillä saman tyyppistä tietoa. (Olion kenttä.) Kahdessa (tai useammassa) taulukossa voi olla sarakkeita, joilla samaa tietoa. Kyseisiä sarakkeita voidaan käyttää liitoksen tekemiseen. Esimerkiksi KURSSI-taulussa on kenttä koodi, joka on samassa merkityksessä SUORITUS-taulun kentän kurssi kanssa. = voidaan tehdä kysely, jonka tuloksena pareja (kurssinimi, suorittaneen opiskelijan nimi). HSMT, c Ville Leppänen, IT, Turun yliopisto, 2008 p.5/32

Mitä operaatioita kantaan? Tietokantaa tyypillisesti käytetään joillakin oikeuksilla. Käyttäjätunnusten luonti ja käyttöoikeusten asettaminen on eräs osa tietokannan toimintaa. Tavallisen käyttäjän toimenpiteitä: Tietokannan luonti. Tietokantapalvelimessa voi olla useita tietokantoja. Tietokannan taulun luonti / tuhoaminen. Tietojen syöttö tauluun. Tauluissa olevien tietojen muuttaminen & tuhoaminen. Kyselyiden tekeminen! Taulujen olemassaolo, määritysten utelu, näkymät,... HSMT, c Ville Leppänen, IT, Turun yliopisto, 2008 p.6/32

Structure Query Language 1/5 Relaatiotietokantojen kyselykieli, joka pyrkii olemaan riippumaton tietokantamoottorista. Tehty 80-luvulla. Ei ole case-sensitive. Tietokannan luonti. (CREATE DATABASE) Tietokannan taulun luonti CREATE TABLE henkilo ( Etunimi VARCHAR(20) NOT NULL, Sukunimi CHAR(30) NOT NULL, Sotu CHAR(15) NOT NULL UNIQUE, Osoite CHAR(50) NOT NULL, OPNumero INTEGER KEY); HSMT, c Ville Leppänen, IT, Turun yliopisto, 2008 p.7/32

Structure Query Language 2/5 Taulun tuhoaminen. DROP TABLE henkilo; Tietojen syöttö tauluuun. INSERT INTO henkilo VALUES( Ville, Leppänen, 083332-273A, Kotikuja 6, Turku 20100, 78623); HSMT, c Ville Leppänen, IT, Turun yliopisto, 2008 p.8/32

Structure Query Language 3/5 Tauluissa olevien tietojen muuttaminen & tuhoaminen. UPDATE henkilo SET Osoite= Uusikotikolo 1, Turku WHERE OPNumero=78623; DELETE FROM henkilo WHERE Etunimi= Ville ; HSMT, c Ville Leppänen, IT, Turun yliopisto, 2008 p.9/32

Structure Query Language 4/5 Kyselyiden tekeminen! SELECT * FROM henkilo; SELECT Sukunimi, Etunimi, Osoite FROM henkilo WHERE OPNumero < 79000 ORDER BY Sukunimi, Etunimi; HSMT, c Ville Leppänen, IT, Turun yliopisto, 2008 p.10/32

Structure Query Language 5/5 Monimutkaisempi kysely! SELECT henkilo.sukunimi, henkilo.etunimi, kurssi.nimi, tentti.arvosana FROM henkilo, kurssi, tentti WHERE henkilo.opnumero = tentti.opnumero AND kurssi.koodi = tentti.koodi AND tentti.koodi = TKO_5565 ; HSMT, c Ville Leppänen, IT, Turun yliopisto, 2008 p.11/32

JDBC JDBC Java Database Connectivity. Muodostaa ns. tietokanta-ajurin rajapinnan. Tietokantojen valmistajat tarjoavat usein oman ohjelmointirajapinnan (yksilöllinen). ODBC = Open DataBase Connectivity; MS:n määrittelemä API; laajasti tuettu TK-toimittajien toimesta. JDBC on uudehko tulokas. JDBC/ODBC-silta olemassa, mutta myös suoraa tukea JDBC:lle (siis rajapinnan luokkien toteutuksia). MS SQL Server, Access, Oracle, Interbase, MySQL, Postgress,... miten tuettu?? HSMT, c Ville Leppänen, IT, Turun yliopisto, 2008 p.12/32

Yhteys tietokantaan GUI pohjainen asiakassovellus palvelimen toiminnal lisuus JDBC ajuri Tietokanta soketit, RMI, HTTP,... tietokanta protokolla (SQL) HSMT, c Ville Leppänen, IT, Turun yliopisto, 2008 p.13/32

Ajureista Java ohjelma JDBC:n API JDBC:n tietokantamanageri Toimittajan JDBC ajuri JDBC Driver API Tietokanta JDBC/ODBC silta ODBC ajuri Tietokanta HSMT, c Ville Leppänen, IT, Turun yliopisto, 2008 p.14/32

Yhteys verkkotietokantaan URL: jdbc:xxxbase://osoite.domain:portti/kanta Esim. jdbc:mysql://localhost:3306/test JDBC-ajurin ottaminen ohjelmaan rekisteröimällä se manuaalisesti: Class.forName("org.gjt.mm.mysql.Driver") (näin siis ladataan luokka JVM:ään) Yhteyden muodostus: String url = "jdbc:mysql://localhost:3306/test"; String u = "ville"; // tunnus String s = "salaisuus"; // salasana Connection c = DriverManager(url, u, s); HSMT, c Ville Leppänen, IT, Turun yliopisto, 2008 p.15/32

Komentojen suorittaminen SQL-lause: Statement -luokka Connection con =...; Statement s = con.getstatement(); Päivitysoperaatio: s.executeupdate(command); Kysely: s.executequery(command); missä command on String-muotoinen SQL-komento!!! Kyselyn tulos on ResultSet -tyyppinen olio. HSMT, c Ville Leppänen, IT, Turun yliopisto, 2008 p.16/32

Luokista 1/3 java.sql.drivermanager: static Connection getconnection(string, String, String) java.sql.connection (rajapinta): Statement createstatement() void close() void commit() void rollback() java.sql.statement (rajapinta): ResultSet executequery(string) int executeupdate(string) void cancel() peruuta keskeneräinen komento HSMT, c Ville Leppänen, IT, Turun yliopisto, 2008 p.17/32

Luokista 2/3 java.sql.resultset (rajapinta): void beforefirst() boolean next() XXX getxxx(int) numerointi 1,... XXX getxxx(string) XXX = int, double, String, Date,... int findcolumn(string) ResultSetMetaData getmetadata() paljon muitakin metodeja HSMT, c Ville Leppänen, IT, Turun yliopisto, 2008 p.18/32

Luokista 3/3 java.sql.resultsetmetadata (rajapinta): int getcolumncount() int getcolumndisplaysize(int) String getcolumnlabel(int) String getcolumnname(int)... paljon muita metodeja JDBC 2: javax.sql Mahdollistaa mm. tulosten muuttamisen ja viennin takaisin kantaan. HSMT, c Ville Leppänen, IT, Turun yliopisto, 2008 p.19/32

MySQL 4.0: käyttäminen Hae softa ja JDBC-ajuri www.mysql.com:sta. Tee c:/my.cnf. [mysqld] basedir=c:/mysql datadir=c:/mysql/data Käynnistä mysqld. Aseta oikeuksia (root:lle salasana etc; mysqladmin). Valmis käyttöön: c:/mysql/bin/mysql -uroot -psalasana test Tällä ohjelmalla voit käsitellä suoraan kantaa. Tietokantamoottori on portissa 3306. HSMT, c Ville Leppänen, IT, Turun yliopisto, 2008 p.20/32

MySQL: taulujen luonti CREATE TABLE Hlo (etunimi VARCHAR(20), sukunimi VARCHAR(20), opnumero INT UNIQUE); CREATE TABLE Kurssi (nimi VARCHAR(50), koodi CHAR(10) UNIQUE); CREATE TABLE Tenttisuoritus (opnumero INT, kurssi CHAR(10), arvosana CHAR(3)); load data local infile "c:/mysql/data/kurssi.txt" into table kurssi; load data local infile "c:/mysql/data/hlo.txt" into table hlo; load data local infile "c:/mysql/data/tenttisuoritus.txt" into table tenttisuoritus; HSMT, c Ville Leppänen, IT, Turun yliopisto, 2008 p.21/32

MySQL: muutama kokeilu select * from table kurssi; select * from table hlo; select * from table tenttisuoritus; select hlo.etunimi, hlo.sukunimi, kurssi.nimi, tenttisuoritus.arvosana from tenttisuoritus, hlo, kurssi where hlo.opnumero = tenttisuoritus.opnumero and hlo.opnumero = 76753 and kurssi.koodi = tenttisuoritus.kurssi; HSMT, c Ville Leppänen, IT, Turun yliopisto, 2008 p.22/32

Tiedosto hlo.txt Ville Leppänen 76753 Heikki Mattila 72233 Sampo Holopainen 65362 Oskari Mattila 64655 Jaakko Oikarinen 54543 HSMT, c Ville Leppänen, IT, Turun yliopisto, 2008 p.23/32

Tiedosto kurssi.txt Ohjelmointi I TKO_5439 Ohjelmointi II TKO_5440 Johdatus tietojenkäsittelytieteeseen I TKO_5565 Johdatus tietojenkäsittelytieteeseen II TKO_5566 Johdatus tietojärjestelmätieteeseen TKO_5555 Laboratoriotyö 1 TKO_5289 Tietojärjestelmien peruskurssi TKO_5339 HSMT, c Ville Leppänen, IT, Turun yliopisto, 2008 p.24/32

Tiedosto tenttisuoritus.txt 76753 TKO_5439 2+ 65362 TKO_5439 3 64655 TKO_5439 2.5 64655 TKO_5339 2 76753 TKO_5339 1 54543 TKO_5339 3-54543 TKO_5565 3 54543 TKO_5566 3 76753 TKO_5565 3-76753 TKO_5566 2+ HSMT, c Ville Leppänen, IT, Turun yliopisto, 2008 p.25/32

SimpleQuery.java 1/2 import java.sql. ; import java.io. ; public class SimpleQuery { public static void main(string[] args) throws Exception { if (args.length 4) { System.out.println("4 Args required."); System.exit(0); } Connection yhteys = teetkyhteys(args[0], args[1], args[2]); teekysely(yhteys, "SELECT FROM " + args[3] + ";"); yhteys.close(); } // main private static Connection teetkyhteys(string base, String user, String pass) throws Exception{ Class.forName("org.gjt.mm.mysql.Driver"); String url = "jdbc:mysql://localhost:3306/"+base; return DriverManager.getConnection(url, user, pass); } // teetkyhteys HSMT, c Ville Leppänen, IT, Turun yliopisto, 2008 p.26/32

SimpleQuery.java 2/2 private static void teekysely(connection c, String kysely) throws Exception { // Kyselyitä tehdään lauseen avulla. Statement stmt = c.createstatement(); ResultSet tulokset = stmt.executequery(kysely); tulokset.beforefirst(); ResultSetMetaData rsmd = tulokset.getmetadata(); int cols = rsmd.getcolumncount(); for (int i = 1; i cols; i++) { System.out.print(rsmd.getColumnName(i)); if (i cols) System.out.print("\t"); else System.out.println(" "); } // for while (tulokset.next()) for (int i = 1; i cols; i++) { System.out.print(tulokset.getObject(i)); if (i cols) System.out.print("\t"); else System.out.println(" "); } // for } // teekysely } // class SimpleQuery HSMT, c Ville Leppänen, IT, Turun yliopisto, 2008 p.27/32

SimpleQuery: suoritus C:\My Documents>java SimpleQuery test root salainen hlo etunimi sukunimi opnumero Ville Leppänen 76753 Heikki Mattila 72233 Sampo Holopainen 65362 Oskari Mattila 64655 Jaakko Oikarinen 54543 C:\My Documents>java SimpleQuery test root salainen kurssi nimi koodi Ohjelmointi I TKO_5439 Ohjelmointi II TKO_5440 Johdatus tietojenkäsittelytieteeseen I TKO_5565 Johdatus tietojenkäsittelytieteeseen II TKO_5566 Johdatus tietojärjestelm,tieteeseen TKO_5555 Jaboratoriotyö 1 TKO_5289 Tietojärjestelmien peruskurssi TKO_5339 C:\My Documents> HSMT, c Ville Leppänen, IT, Turun yliopisto, 2008 p.28/32

JointQuery.java 1/2 import java.sql. ; import java.io. ; public class JointQuery { // Seuraavien kirjoittaminen ohjelmaan on hyvin arveluttavaa. private static String kanta = "jdbc:mysql://localhost:3306/test"; private static String käyttäjä = "root"; private static String salasana = "salainen"; public static void main(string[] args) throws Exception { if (args.length 1) { System.out.println("Usage: java JointQuery OpNumero."); System.exit(0); } Connection yhteys = teetkyhteys(); String kysely = "SELECT hlo.etunimi, hlo.sukunimi," + "kurssi.nimi, tenttisuoritus.arvosana" + "FROM tenttisuoritus, hlo, kurssi" + "WHERE hlo.opnumero = tenttisuoritus.opnumero" + "AND hlo.opnumero = " + args[0] + "AND kurssi.koodi = tenttisuoritus.kurssi;"; teekysely(yhteys, kysely); yhteys.close(); } // main HSMT, c Ville Leppänen, IT, Turun yliopisto, 2008 p.29/32

JointQuery.java 2/2 private static Connection teetkyhteys() throws Exception{ Class.forName("org.gjt.mm.mysql.Driver"); return DriverManager.getConnection(kanta, käyttäjä, salasana); } // teetkyhteys private static void teekysely(connection c, String kysely) throws Exception { // Kyselyitä tehdään lauseen avulla. Statement stmt = c.createstatement(); ResultSet tulokset = stmt.executequery(kysely); tulokset.beforefirst(); ResultSetMetaData rsmd = tulokset.getmetadata(); int cols = rsmd.getcolumncount(); while (tulokset.next()) for (int i = 1; i cols; i++) { System.out.print(tulokset.getString(i)); if (i cols) System.out.print("\t"); else System.out.println(" "); } // for } // teekysely } // class JointQuery HSMT, c Ville Leppänen, IT, Turun yliopisto, 2008 p.30/32

JointQuery: suoritus C:\My Documents>java JointQuery 76753 Ville Leppänen Ohjelmointi I 2+ Ville Leppänen Johdatus tietojenkäsittelytieteeseen I 3- Ville Leppänen Johdatus tietojenkäsittelytieteeseen II 2+ Ville Leppänen Tietojärjestelmien peruskurssi 1 C:\My Documents>java JointQuery 7 (ei tulosta mitään) C:\My Documents>java JointQuery 54543 Jaakko Oikarinen Johdatus tietojenkäsittelytieteeseen I 3 Jaakko Oikarinen Johdatus tietojenkäsittelytieteeseen II 3 Jaakko Oikarinen Tietojärjestelmien peruskurssi 3- C:\My Documents> HSMT, c Ville Leppänen, IT, Turun yliopisto, 2008 p.31/32

Lopuksi JDK tukee JDBC:n kautta relaatiotietokantojen käyttöä. Toteutus on aika naivi: käytetään suoraan tekstipohjaisia SQL-komentoja kyselyissä tulos jäsennetty taulukon muotoon. GUIn liittäminen tietokannan käyttöön suoraviivaista. Tietokannan tauluja voi luoda JDBC:n kautta, mutta lähinnä tehdään kyselyitä ja modifioidaan tietueita. JDBC on lähinnä vain joukko rajapintoja. Käyttämiseksi tarvitaan kohdetietokantaa käyttävää ajuria. Tietokannan pitää myös olla päällä relaatiotietokanta ei ole vain joukko tiedostoja. Monet ajurit ovat kaupallisia! Ajurit: asennus ja käyttö vaikeaa? Tietokanta on keskeinen elementti hajautetuissa järjestelmissä. HSMT, c Ville Leppänen, IT, Turun yliopisto, 2008 p.32/32