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



Samankaltaiset tiedostot
Tietokannat II -kurssin harjoitustyö

Java ja tietokannan käsittely (JDBC)

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

Listarakenne (ArrayList-luokka)

1. Kun käyttäjä antaa nollan, niin ei tulosteta enää tuloa 2. Hyväksy käyttäjältä luku vain joltain tietyltä väliltä (esim tai )

Mikä yhteyssuhde on?

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

Tietokannat II -kurssin harjoitustyö

YHTEYSSUHDE (assosiation)

Ohjelmistojen mallintamisen ja tietokantojen perusteiden yhteys

Metodien tekeminen Javalla

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

1 Tehtävän kuvaus ja analysointi

HELIA 1 (14) Outi Virkki Tiedonhallinta

Tehtävä 1. Tehtävä 2. Arvosteluperusteet Koherentti selitys Koherentti esimerkki

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

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

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

Taulukoiden käsittely Javalla

JAVA-OHJELMOINTI 3 op A274615

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

Ylläpitodokumentti Labra

LINUX-HARJOITUS, MYSQL

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

Web Services tietokantaohjelmoinnin perusteet

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

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

Vahva koostumussuhde (Composition)

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

Java ja grafiikka. Ville Sundberg

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

Poikkeustenkäsittely

POISSAOLOJEN SEURANTAJÄRJESTELMÄ

Ohjelmointi 1 / 2009 syksy Tentti / 18.12

RDBMS - Yhteyskäytännöt

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.

KOHDELUOKAN MÄÄRITTELY

PostgreSQL:n ja JDBC-ajurin asennus- ja käyttöohje

Taulukot. Taulukon määrittely ja käyttö. Taulukko metodin parametrina. Taulukon sisällön kopiointi toiseen taulukkoon. Taulukon lajittelu

Luokan sisällä on lista

Toisessa viikkoharjoituksessa on tavoitteena tutustua JUnit:lla testaukseen Eclipse-ympäristössä.

SQL - STRUCTURED QUERY LANGUAGE

Olio-ohjelmointi Javalla

Rinnakkaisohjelmointi kurssi. Opintopiiri työskentelyn raportti

public static void main (String [] args)

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

XNA grafiikka laajennus opas. Paavo Räisänen. Tämän oppaan lähdekoodit ovat ladattavissa näiden sivujen Ladattavat osiossa.

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

Harjoitus Olkoon olemassa luokat Lintu ja Pelikaani seuraavasti:

Lista luokan sisällä

Tietorakenteet, laskuharjoitus 7,

Microsoft Visual Studio 2005

CSE-A1200 Tietokannat

Tietuetyypin määrittely toteutetaan C-kielessä struct-rakenteena seuraavalla tavalla:

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

Java-kielen perusteita

Ylläpitodokumentti. Oppimistavoitteiden hallintajärjestelmä harri

Metodien tekeminen Javalla

Tietokantasovelluksen määrittelydokumentti

Periytyminen (inheritance)

Ohjelmistotekniikan menetelmät, koe

Ohjelmointityö 3. Mikko Laamanen

Ohjelmistojen mallintaminen, olioja relaatiomallinnuksen suhteesta

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

Arena-koulutus Sisäänkirjautuminen ja omat sivut. Noora Muurimäki Outi Syväniemi Leila Virta

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

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

Sisällys. 14. Poikkeukset. Johdanto. Johdanto

Ohjelmoinnin jatkokurssi, kurssikoe

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

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

Rajapinta (interface)

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

Informaatioteknologian laitos Olio-ohjelmoinnin perusteet / Salo

Rinnakkaisohjelmointi, Syksy 2006

Suunnitteludokumentti

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

Haaga-Helia/IltaTiko ict2tcd005: Ohjelmiston suunnittelutaito 1/7 Anne Benson. Tällä opintojaksolla käytämme VS:n kolmen kokonaisuuden luomiseen:

1. Mitä tehdään ensiksi?

Käyttöohje. Labra. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

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

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

Opiskeluoikeuksien maaran tiedonkeruu

HELIA SQL-harjoituksia 1(1) atk72d Versiopvm:

Tiedonhallinnan perusteet. Viikko 1 Jukka Lähetkangas

Sisällys. 14. Poikkeukset. Johdanto. Johdanto

Olio-ohjelmointi Virhetilanteiden käsittely

Olion elinikä. Olion luominen. Olion tuhoutuminen. Olion tuhoutuminen. Kissa rontti = null; rontti = new Kissa();

EXEC SQL BEGIN DECLARE SECTION

14. Poikkeukset 14.1

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

TIETOKANNAT: MYSQL & POSTGRESQL Seminaarityö

Java-kielen perusteet

Olio-ohjelmointi Käyttöliittymä

Luokat ja oliot. Ville Sundberg

Ohjelmointi 2 / 2010 Välikoe / 26.3

7. Oliot ja viitteet 7.1

14. Poikkeukset 14.1

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

Transkriptio:

Esimerkki: Tehtävä 1. Tietojen lisääminen, poistaminen, päivittäminen ja tulostaminen Luo tietokanta Koulu. Tietokantaan lisätään 3 taulua. Kurssit-taulu: kurssiid not null primary key INTEGER aineid not null primary key VARCHAR(20) kurssinnimi VARCHAR(30) opppisteet INTEGER Oppilaat-taulu: oppilasid not null primary key INTEGER etunimi VARCHAR(15) sukunimi VARCHAR(20) Arvioinnit: oppilasid not null primary key INTEGER kurssiid not null primary key INTEGER suorituspvm DATE arvosana INTEGER Lisää sen jälkeen kolme kurssia, kolme oppilasta ja anna oppilaille arvosanat, kursseista jotka he ovat suorittaneet. Luo tämän jälkeen uusi projekti ja avaa tietokantayhteys pääohjelmasta Koulu-tietokantaan. Lisää pääohjelmasta seuraavat oppilaat Oppilas-tauluun: 4, Inka, Helle 5, Maija, Meikäläinen 6, Samu, Sirkka Poista oppilasid:llä 2 oleva oppilas Oppilaat-taulusta pääohjelman kautta. Anna uusille oppilaille arvosanat Arvioinnit-tauluun. Kokeile lähettää kaikki tiedot tietokannan taulukkoon kerralla statement.addbatch() ja statement.executebash()-metodeja käyttämällä. Päivitä oppilasid:llä 4 olevan henkilön kurssiid:llä 2 olevan kurssin arvosana viitokseksi (5). Tulosta kaikkien kolmen taulun tiedot komentoriville.

EXTRA: Tee taulujen tulostaminen metodissa, jota kutsut pääohjelmasta. public static void main(string[] args) throws ClassNotFoundException, SQLException { // TODO code application logic here String url = "jdbc:derby://localhost:1527/koulu"; Class.forName("org.apache.derby.jdbc.ClientDriver"); System.out.println("Driver ladattu"); Connection connection = DriverManager.getConnection(url,"root", "root"); System.out.println("Yhteys luotu"); Statement statement = connection.createstatement(); //statement.executeupdate("insert INTO ROOT.OPPILAAT VALUES (4,'Inka','Helle')"); //statement.executeupdate("insert INTO ROOT.OPPILAAT VALUES (5,'Maija','Meikäläinen')"); //statement.executeupdate("insert INTO ROOT.OPPILAAT VALUES (6,'Samu','Sirkka')"); //statement.executeupdate("delete FROM ROOT.OPPILAAT" + //" WHERE oppilasid=2"); 4)"); 2)"); 5)"); 1)"); 3)"); 2)"); 4)"); 5)"); 3)"); //statement.addbatch("insert INTO ROOT.ARVIOINNIT VALUES (4,1,'2016-01-03', // statement.addbatch("insert INTO ROOT.ARVIOINNIT VALUES (4,2,'2016-01-03', // statement.addbatch("insert INTO ROOT.ARVIOINNIT VALUES (4,3,'2016-01-03', // statement.addbatch("insert INTO ROOT.ARVIOINNIT VALUES (5,1,'2016-01-03', //statement.addbatch("insert INTO ROOT.ARVIOINNIT VALUES (5,2,'2016-01-03', //statement.addbatch("insert INTO ROOT.ARVIOINNIT VALUES (5,3,'2016-01-03', //statement.addbatch("insert INTO ROOT.ARVIOINNIT VALUES (6,1,'2016-01-03', //statement.addbatch("insert INTO ROOT.ARVIOINNIT VALUES (6,2,'2016-01-03', //statement.addbatch("insert INTO ROOT.ARVIOINNIT VALUES (6,3,'2016-01-03', //statement.executebatch(); //statement.executeupdate("update ROOT.ARVIOINNIT SET arvosana=5 WHERE oppilasid=4 AND kurssiid=2"); //Suoritetaan kysely tulostatiedot(statement, "ARVIOINNIT"); tulostatiedot(statement, "KURSSIT"); tulostatiedot(statement, "OPPILAAT"); /** ResultSet resultset = statement.executequery("select * from ROOT.ARVIOINNIT\n" + ""); //Tulostetaan kyselyn sisältö komentoriville

while(resultset.next()){ System.out.println(resultSet.getString("oppilasID")+ " "+ resultset.getstring("kurssiid")+" "+ resultset.getstring("suorituspvm") + " " + resultset.getstring("arvosana") ); resultset = statement.executequery("select * from ROOT.OPPILAAT\n" + ""); //Tulostetaan kyselyn sisältö komentoriville while(resultset.next()){ System.out.println(resultSet.getString("oppilasID")+ " "+ resultset.getstring("etunimi")+" "+ resultset.getstring("sukunimi") ); //Tulostetaan kyselyn sisältö komentoriville while(resultset.next()){ System.out.println(resultSet.getString("kurssiID")+ " "+ resultset.getstring("aine")+" "+ resultset.getstring("kurssinnimi") + " " + resultset.getstring("opppisteet") ); */ connection.close(); //muuttujan lisääminen kyselyyn!! public static void tulostatiedot(statement statement, String tablename) throws SQLException{ ResultSet resultcolumns = statement.executequery("select * FROM ROOT."+tableName+""); ResultSetMetaData rsmd = resultcolumns.getmetadata(); int columnnumber = rsmd.getcolumncount(); System.out.println(columnNumber); while (resultcolumns.next()){ for(int i = 1; i <= columnnumber; i++){ System.out.print(resultColumns.getString(i) + " "); System.out.println(" "); Tehtävä 2. Taulun luominen ja päivittäminen Tee tehtävät käyttämällä Koulu-tietokantaa. Luo yhteys Koulu-tietokantaan pääohjelmasta ja suorita seuraavat toiminnot pääohjelmasta. Lisää tietokantaan taulu Opettajat. Opettajat-taulu: opettajaid INTERGER not null primary key etunimi VARCHAR(20)

sukunimi VARCHAR(30) opetettavaaine VARCHAR(30) Lisää tauluun kolme opettajaa. Lisää Kurssit-tauluun sarake opettajaid:lle. OpettajaID on kokonaisluku. Lisää kursseille opettajat. Tulosta Kurssit-taulu ja tarkasta, että tiedot ovat päivittyneet oikein. public static void main(string[] args) throws ClassNotFoundException, SQLException { // TODO code application logic here String url = "jdbc:derby://localhost:1527/koulu"; Class.forName("org.apache.derby.jdbc.ClientDriver"); System.out.println("Driver ladattu"); Connection connection = DriverManager.getConnection(url,"root", "root"); System.out.println("Yhteys luotu"); Statement statement = connection.createstatement(); //statement.execute("create TABLE ROOT.OPETTAJAT (opettajaid INTEGER not null primary key, etunimi VARCHAR(20), sukunimi VARCHAR(30), opetettavaaine VARCHAR(30))"); // statement.executeupdate("insert INTO ROOT.OPETTAJAT VALUES (1,'Silja','Sade', 'Matematiikka')"); //statement.executeupdate("insert INTO ROOT.OPETTAJAT VALUES (2,'Aku','Ankka', 'Tietotekniikka ja äidinkieli')"); // statement.execute("alter TABLE ROOT.KURSSIT ADD opettajaid INTEGER"); statement.executeupdate("update ROOT.KURSSIT" + " SET opettajaid=1" + " WHERE aine='matematiikka'"); statement.executeupdate("update ROOT.KURSSIT" + " SET opettajaid=2" + " WHERE aine='tietotekniikka'"); statement.executeupdate("update ROOT.KURSSIT" + " SET opettajaid=3" + " WHERE aine='äidinkieli'"); connection.close(); Tehtävä 3. Tietokantayhteys graafisella käyttöliittymällä Toteuta harjoitusten 53 ja 54 pohjalta jokin tehtävien tietokantatoiminto graafisella käyttöliittymällä. Liitä palautukseen mukaan myös kuva graafisesta käyttöliittymästäsi, jos et palauta tehtävää zipattuna projektikansiona! Tehtävä 4. Kirjautuminen Luo uusi tietokanta, jonne voit luoda valmiiksi yhden taulun nimeltään Kayttajat. Kayttajat-taulu:

kayttajaid INTERGER not null primary key kayttajatunnus VARCHAR(30) salasana VARCHAR(10) Luo uusi projekti, jossa luot tietokantayhteyden luomaasi tietokantaan. Lisää käyttäjiä Käyttäjät-tauluun, jotta voit kokeilla kirjautua heidän tiedoillaan kirjautumisikkunassa. Tee haku salasanoista Kayttajat-taulusta, jossa kayttajatunnus vastaa kirjautumisikkunaan annettua kayttajatunnusta. Vertaa sen jälkeen annettua salasanaa ja tietokannasta haettua salasanaa. Jos salasanat ovat samat (mieti hyväksytkö isot ja pienet kirjaimet samana merkkinä vai ovatko esimerkiksi Salasana ja salasana eri sanoja), ilmoita käyttäjällle ikkunassa Kirjautuminen onnistui!. Vastaavasti, jos salasana ei ole sama ilmoita käyttäjälle Kirjautuminen epäonnistui! Käyttäjälle voi ilmoittaa myös, jos käyttäjätunnusta ei löydy tietokannasta. EXTRA: Lisää toiminto, jossa voit lisätä graafisen käyttöliittymän kautta käyttäjiä Kayttajat-tauluun. private void kirjaudunappiactionperformed(java.awt.event.actionevent evt) { String ktunnus = tunnuskentta.gettext(); String salasana = salasanakentta.gettext(); String url = "jdbc:derby://localhost:1527/koulu"; try { Class.forName("org.apache.derby.jdbc.ClientDriver"); System.out.println("Driver ladattu"); Connection connection = DriverManager.getConnection(url,"root", "root"); System.out.println("Yhteys luotu"); Statement statement = connection.createstatement(); JFrame frame = new JFrame("Huomautus"); System.out.println(salasana); System.out.println(ktunnus); //String sql = ("SELECT SALASANA FROM ROOT.KAYTTAJAT WHERE nimi = " + ktunnus); String sql = ("SELECT SALASANA FROM ROOT.KAYTTAJAT WHERE nimi = '"+ktunnus+"'"); System.out.println(sql); ResultSet salasanahaku = statement.executequery(sql); String annettusalasana = ""; System.out.println(salasanaHaku.toString()); while(salasanahaku.next()){ annettusalasana = salasanahaku.getstring("salasana");

if(annettusalasana.equals(salasana)){ JOptionPane.showMessageDialog(frame, "Kirjautuminen onnistui!"); else{ JOptionPane.showMessageDialog(frame, "Kirjautuminen epäonnistui!"); connection.close(); catch (ClassNotFoundException ex) { catch (SQLException ex) {