Presentation laddar. Vänta.

Presentation laddar. Vänta.

Lars Degerstedt Attribution-NonCommercial-ShareAlike2.5 License CliMate: Laboration 3 – dataselektion Human Centered Systems Inst. för datavetenskap Linköpings.

Liknande presentationer


En presentation över ämnet: "Lars Degerstedt Attribution-NonCommercial-ShareAlike2.5 License CliMate: Laboration 3 – dataselektion Human Centered Systems Inst. för datavetenskap Linköpings."— Presentationens avskrift:

1 Lars Degerstedt Attribution-NonCommercial-ShareAlike2.5 License CliMate: Laboration 3 – dataselektion Human Centered Systems Inst. för datavetenskap Linköpings universitet

2 Lars Degerstedt Attribution-NonCommercial-ShareAlike2.5 License Översikt UI för sökning sökfält och felhantering Select i Java och Join Frågeobjekt Svarshantering Skriva ut på fil

3 Lars Degerstedt Attribution-NonCommercial-ShareAlike2.5 License Laboration 3: uppgift 1 Skapa inmatningsfält för sökning i databas Inmatade värden ska kontrolleras Förslagsvis rödfärgade fält

4 Lars Degerstedt Attribution-NonCommercial-ShareAlike2.5 License UI-representation av frågor dropdown gömmer snabbknappar radiobutton vid få val undvik koder som fritext datum och tid organisera logiskt

5 Lars Degerstedt Attribution-NonCommercial-ShareAlike2.5 License CliMate: grafiken metadata måste editeras för att få text-titlarna i exempelkoden. Rekomenderad layout-manager är GridLayout elementen flyter ut om plats finns Generiska lyssnare på min och max-fält finns JProgressBar ska användas på samma sätt som i labb 2 update-lyssnare ska lyssna på ObservationReport håller först sökvärden; sen ResultSet och skriver på fil

6 Lars Degerstedt Attribution-NonCommercial-ShareAlike2.5 License Swings Layout-hantering JPanel p = new JPanel(); p.setLayout(new GridLayout(0,2)); p.add(button1); p.add(label2); p.add(button3);...etc

7 Lars Degerstedt Attribution-NonCommercial-ShareAlike2.5 License CliMate: enkel felhantering sökdata-format testas för varje fält java.text.SimpleDateFormat#parse testar datum (se javadoc) Pop-up visas för första hittat fel förbättrad (frivillig) variant: hitta alla fel direkt Alt: skriv ut felen vid fälten istället för pop-up

8 Lars Degerstedt Attribution-NonCommercial-ShareAlike2.5 License Sekvensdiagram för “Sök”: från presentation till databas SearchDb Action SearchDb Worker Observation Report Database Service searchB: JButton action Performed start select... new SwingWorker-tråden Swing-tråden Select Statement execute Query -”-... setNumberOf Processed... selectResult

9 Lars Degerstedt Attribution-NonCommercial-ShareAlike2.5 License ObservationReport Observable liksom FileCollection Lyssna på progress vid sparande till fil Har fält som motsvarar sökfälten i UI metoderna setUpperBound, setLowerBound report-objektet vet inte vilka sökkriterier som finns inför konstant i klassen för varje fält Sök i databas ingen egen metod görs av write-metoden Utskrift på fil jmf. FileCollection har hand om inläsning

10 Lars Degerstedt Attribution-NonCommercial-ShareAlike2.5 License Laboration 3: uppgift 2 Sök i databas baserat på inmatade sökvärden Två tabeller används för att hämta svar

11 Lars Degerstedt Attribution-NonCommercial-ShareAlike2.5 License SQL-SELECT SELECT [ALL | DISTINCT] columnname1 [,columnname2] FROM tablename1 [,tablename2] [WHERE condition] [ and|or condition...] [GROUP BY column-list] [HAVING "conditions] [ORDER BY "column-list" [ASC | DESC] ] Enklaste fallet: SELECT * FROM tablename WHERE condition; Villkor: = likhet < mindre än > större än <= mindre än eller lika >= större än eller lika <> inte lika LIKE substrängs likhet med % REGEXP reguljära uttryck (MySQL)

12 Lars Degerstedt Attribution-NonCommercial-ShareAlike2.5 License Enkelt exempel på SQL-utryck SELECT city, region FROM towns WHERE population > 15000 Linköping Östergötland 120 000 Handeln Stockholm 25 000 Grums Värmland 10 000 region city population tabell towns Linköping Östergötland Handeln Stockholm region city resultatmängd

13 Lars Degerstedt Attribution-NonCommercial-ShareAlike2.5 License SQL-select med JDBC String query = "SELECT city, region FROM towns WHERE population > 15000”; ResultSet rs = stmt.executeQuery(query); while (rs.next()) { String city = rs.getString("city"); String region = rs.getString("region"); System.out.println(city + " " + region); } stmt.close(); Linköping Östergötland Handeln tockholm

14 Lars Degerstedt Attribution-NonCommercial-ShareAlike2.5 License Exempel på SQL-utryck: inner join SELECT suppliers.id, suppliers.name, orders.date FROM suppliers, orders WHERE suppliers.id = orders.su_id; 10000 Ericsson 10001 Nokia 10002 Telia 10003 Vodafone id name tabell suppliers 500125 10000 2003/05/12 500126 10002 2003/05/13 su_id id date tabell orders 10000 Ericsson 2003/05/12 10002 Telia 2003/05/13 dateid name resultatmängd

15 Lars Degerstedt Attribution-NonCommercial-ShareAlike2.5 License SQL-select i JDBC String query = "SELECT suppliers.id, suppliers.name, orders.date” + “FROM suppliers, orders” + “WHERE suppliers.id = orders.su_id"; ResultSet rs = stmt.executeQuery(query); while (rs.next()) { int id = rs.getInt("id"); String name = rs.getString("name") Date date = rs.getDate(“date”); System.out.println(id + “:” + name + “:” + date); } stmt.close(); 10000:Ericsson:2003/05/12 10002:Telia:2003/05/13

16 Lars Degerstedt Attribution-NonCommercial-ShareAlike2.5 License Query Object/Method (Fowler) Jmf. Update Object/Method (labb 2) Kapsla in SQL-kod undvik konkret metadata/program i löpande källkod används i transaktionskript-metoderna DataMapper använder dessa metoder för att bygga upp sitt SQL- statement och sen Men Implementera bara vad du behöver liten overhead – försök inte implementera hela SQL/Select Hitta en bra abstraktionsnivå...svårt men värdefullt

17 Lars Degerstedt Attribution-NonCommercial-ShareAlike2.5 License SelectStatement addField: metod som tar ett Field-objekt. Innehåller både fältnamn och tabellen för fältet tilldelar query = "SELECT " + col + " FROM " + table + " WHERE " addUpperLimit/addLowerLimit: lägger dit ny ekvation i where-delen och “AND” om ekvationer redan finns execute: skickar skapad fråga till databasen

18 Lars Degerstedt Attribution-NonCommercial-ShareAlike2.5 License Laboration 3: uppgift 3 Uppgift 3: Spara databassvaret på fil filens namn ska efterfrågats spara ner i block använd progressbar jobba med SelectionResult

19 Lars Degerstedt Attribution-NonCommercial-ShareAlike2.5 License Skiss på förlopp Klick på “spara” Visa upp JFileChooser Spara på fil Uppdatera progressbar

20 Lars Degerstedt Attribution-NonCommercial-ShareAlike2.5 License Spara på fil: paketet java.io Enkelriktad sekvensiell trafik - write Tecken-strömmar XxxWriter Byte-strömmar XxxxOutputStream Smidig hantering av objekt och dataformat PrintXxx t ex stöd för println som avslutar med “\n” Java-Ström Datakälla Java-klientprogram

21 Lars Degerstedt Attribution-NonCommercial-ShareAlike2.5 License Skriva till teckenströmmar Kan hantera både byte och char-strömmar Stöd för utskrifter av olika datatyper t ex print och println close() stänger strömmen java.io.PrintWriter Titta i javadoc!

22 Lars Degerstedt Attribution-NonCommercial-ShareAlike2.5 License Exempel: skriv ut till fil import java.io.*;... String[] fileData = {"ett", "litet", "test"}; String fileName = “outfile.txt”; try { PrintWriter out = new PrintWriter(fileName); for (String row : fileData) { out.println(row); } out.close(); } catch (IOException e) { System.err.println("Exception thrown!"); e.printStackTrace(); System.exit(-1); // exit with abnormal value } Skapar/ skriver över filen ett litet test outfile.txt

23 Lars Degerstedt Attribution-NonCommercial-ShareAlike2.5 License Summering Användargränssnitt för sökning fält med interaktivt stöd, t ex felingenkänning Arbeta (indirekt) med SQL SELECT QueryObject i climate.database gömmer Sql-koden Iterera (indirekt) över ett ResultSet och spara på fil


Ladda ner ppt "Lars Degerstedt Attribution-NonCommercial-ShareAlike2.5 License CliMate: Laboration 3 – dataselektion Human Centered Systems Inst. för datavetenskap Linköpings."

Liknande presentationer


Google-annonser