Web- og serverprogrammering
|
|
|
- Stig Sørensen
- 10 år siden
- Visninger:
Transkript
1 Dette materiale er under Åben Dokumentlicens, se Web- og serverprogrammering Databasekommunikation - dag 7 Strategier til databaseadgang JDBC (Java DataBase Connectivity) Evt: JDBC RowSet Login-eksempel: Javabønne med JDBC JPA - Java Persistence API Læsning: WJSP 5, WJSP
2 JDBC databaseadgang Indlæse driveren Med Java under Windows følger en standard JDBC-ODBC-bro med, så man kan kontakte alle datakilder, der er defineret under ODBC: Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); Er det en anden database, skal man have en jar-fil med en driver fra producenten. Nyeste drivere kan findes på Driver til en Oracle-database (hedder typisk classes12.zip): Class.forName("oracle.jdbc.driver.OracleDriver"); Driver til en MySQL-database (hentes på Class.forName("com.mysql.jdbc.Driver") Etablere forbindelsen Herefter kan man oprette forbindelsen med (for en ODBC-driver): Connection forb = DriverManager.getConnection("jdbc:odbc:datakilde1"); Datakildens navn (her "datakilde1") skal være defineret i Windows. Databasedrivere JDBC-drivere findes i fire typer: Type 1: JDBC-ODBC-broen. Langsomste og kun til Windows. Type 2: Drivere skrevet i C eller C++ til den specifikke platform (normalt de hurtigste). Type 3: Platformsuafhængig (ren Java-) driver med databaseuafhængig kommunikationsprotokol Type 4: Platformsuafhængig (ren Java-) driver skrevet til at kommunikere med en specifik database (mest udbredte og næsten lige så hurtig som type 2). Oracle-database: Connection forb = DriverManager.getConnection( "jdbc:oracle:thin:@ora.javabog.dk:1521:student","jacob","jacob"); MySQL-database: DriverManager.getConnection("jdbc:mysql:///jacob","root","xyz");
3 JDBC databaseadgang Kommunikere med databasen import java.sql.*; public class Databasekommunikation public static void main(string[] arg) throws Exception Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); Connection forb = DriverManager.getConnection("jdbc:odbc:datakilde1"); Statement stmt = forb.createstatement(); // forsøg at slette tabel hvis den ikke findes opstår en fejl som fanges try stmt.executeupdate("drop table KUNDER"); catch (Exception e) stmt.executeupdate("create table KUNDER (NAVN varchar(32), KREDIT number)"); stmt.executeupdate("insert into KUNDER values('jacob', 1799)"); // indsæt data fra variabler String navn = "Hans"; double kredit = 500; stmt.executeupdate("insert into KUNDER(NAVN,KREDIT) values('"+navn+"', "+kredit+")"); // forespørgsler ResultSet rs = stmt.executequery("select NAVN, KREDIT from KUNDER"); while (rs.next()) navn = rs.getstring("navn"); kredit = rs.getdouble("kredit"); System.out.println(navn+" "+kredit); Jacob Brian 0.0 Hans 500.0
4 JDBC databaseadgang
5 Persistensproblemet Strategier til databaseadgang Rigtig mange muligheder, f.eks.: JDBC-kode blandet sammen med resten af koden JDBC-kode i dedikerede klasser JDBC RowSet - ResultSet, der også opdaterer databasen CachedRowSet - kan eksistere løsrevet fra databasen WebRowSet giver XML, der kan transformeres, f.eks. med XSLT (XSL style sheet), eller Javas XML-behandling EJB - Enterprise JavaBeans - ét serverobjekt pr. række JPA - Java Persistence AP - ét objekt pr. række Proprietære løsninger Giver mulighed for grafiske databasekomponenter Oracle JDeveloper ADF - Application Developer Framework Borland JBuilder: DataModule IBM WebSphere Studio
6 JDBC-ODBC-bro til Access-fil Eksempel: 1. Denne computer 2. Kontrolpanel 3. Administration
7 MySQL-database Installér MySQL Hent fra mysql.com test-database god i starten Grafiske værktøjer Installér JDBC-driver Connector/J fra mysql.com Læg JAR-fil i java/jre/lib/ext/ Kontakt test-database: Class.forName("com.mysql.jdbc.Driver"); Connection forb = DriverManager.getConnection("jdbc:mysql:///test");
8 Forberedte SQL-kommandoer import java.sql.*; public class ForberedtSQL public static void main(string[] arg) throws Exception Class.forName("com.mysql.jdbc.Driver"); Connection con = DriverManager.getConnection("jdbc:mysql:///test"); // Forbered kommandoerne til databasen, f.eks. i starten af programmet: PreparedStatement indsætpstm = con.preparestatement( "INSERT INTO kunder (navn,kredit) VALUES(?,?)"); PreparedStatement hentpstm = con.preparestatement( "SELECT navn, kredit FROM kunder WHERE navn=?"); // under programudførelsen kan de forberedte kommandoer udføres mange gange: for (int i=0; i<100; i++) indsætpstm.setstring(1, "Brian"); indsætpstm.setint(2, i); indsætpstm.execute(); indsætpstm.setstring(1, "Hans' venner"); // bemærk ' i strengen indsætpstm.setint(2, 1042+i); indsætpstm.execute(); hentpstm.setstring(1, "Hans' venner"); ResultSet rs = hentpstm.executequery(); // bemærk ' i SQL forespørgslen // man løber igennem svaret som man plejer while (rs.next()) String navn = rs.getstring(1); double kredit = rs.getdouble(2); System.out.println(navn+" "+kredit);
9 Eksempel: Gæstebog Se WJSP, s. 98 Optimering Drivere Prepared statement Batch (kø) Stored procedures Forbindelsespujler
10 Samlede batch-opdateringer - venter ikke på svar fra DBMS mellem opdateringer - data-integritet...? import java.sql.*; public class Batchopdateringer public static void main(string[] arg) throws Exception Class.forName("com.mysql.jdbc.Driver"); Connection con = DriverManager.getConnection("jdbc:mysql:///test"); PreparedStatement pstmt = con.preparestatement( "INSERT INTO kunder (navn,kredit) VALUES(?,?)"); pstmt.setstring(1, "Hans"); pstmt.setint(2, 142); pstmt.addbatch(); pstmt.setstring(1, "Grethe"); pstmt.setint(2, 242); pstmt.addbatch(); // send ændringer til databasen pstmt.executebatch();
11 Transaktioner import java.sql.*; public class UdenAutocommit public static void main(string[] arg) throws Exception Class.forName("oracle.jdbc.driver.OracleDriver"); Connection forb = DriverManager.getConnection( "jdbc:oracle:thin:@ora.javabog.dk:1521:student","jacob","jacob"); try forb.setautocommit(false); Statement stmt = forb.createstatement(); stmt.executeupdate("insert into KUNDER(NAVN,KREDIT) values('jacob', 17)"); stmt.executeupdate("insert into KUNDER(NAVN,KREDIT) values('brian', 0)"); // flere transaktioner... System.err.println("Alt gik godt, gør ændringerne forpligtigende"); forb.commit(); catch (Exception e) e.printstacktrace(); System.err.println("Noget gik galt! Annullerer ændringerne..."); forb.rollback(); finally // Husk at sætte auto commit tilbage, af hensyn til andre transaktioner forb.setautocommit(true);
12 Rydde op med finally Finally-blokke bliver altid udført, selv når undtagelsen ikke fanges, eller der hoppes ud af metoden på anden vis public void metode1() try... if (...) return; if (...) throw new IllegalArgumentException(...);... catch (NullPointerException e) System.out.println("Intern fejl:"); e.printstacktrace(); finally System.out.println("Dette bliver altid udført."); System.out.println("Slut på metode1()");
13 ResultSetMetaData rsmd = rs.getmetadata(); int antalkolonner Metadata= rsmd.getcolumncount(); System.out.println(); System.out.println(" " + titel + " ("+antalkolonner+" kolonner)"); // udskriv kolonnenavnene for (int i=1; i<=antalkolonner; i++) skrivformateret(rsmd.getcolumnname(i)); System.out.println(); // udskriv cellerne i hver række while (rs.next()) for (int i=1; i<=antalkolonner; i++) skrivformateret(""+rs.getstring(i)); System.out.println(); System.out.println(" "); public static void main(string[] arg) throws Exception Class.forName("oracle.jdbc.driver.OracleDriver"); Connection forb = DriverManager.getConnection( "jdbc:oracle:thin:@ora.javabog.dk:1521:student","jacob","jacob"); DatabaseMetaData dmd = forb.getmetadata(); System.out.println("DatabaseProductName = "+dmd.getdatabaseproductname()); System.out.println("DriverName = "+dmd.getdrivername()); System.out.println("MaxRowSize = "+dmd.getmaxrowsize()); ResultSet rs = dmd.gettables(null, "JANO", "%", null); udskriv("tabeller i databasen", rs); Statement stmt = forb.createstatement(); rs = stmt.executequery("select * from KUNDER"); udskriv("kunder", rs); public static void skrivformateret(string str) System.out.print(str); String KOL = " "; if (str.length()<kol.length()) System.out.print(KOL.substring(str.length()));
14 ResultSetMetaData rsmd = rs.getmetadata(); int antalkolonner Metadata = rsmd.getcolumncount(); System.out.println(); System.out.println(" " + titel + " ("+antalkolonner+" kolonner)"); // udskriv kolonnenavnene for (int i=1; i<=antalkolonner; i++) skrivformateret(rsmd.getcolumnname(i)); System.out.println(); // udskriv cellerne i hver række while (rs.next()) for (int i=1; i<=antalkolonner; i++) skrivformateret(""+rs.getstring(i)); System.out.println(); System.out.println(" "); DatabaseProductName = Oracle public static void main(string[] arg) throws Exception DriverName = Oracle JDBC driver Class.forName("oracle.jdbc.driver.OracleDriver"); MaxRowSize = 2000 Connection forb = DriverManager.getConnection( "jdbc:oracle:thin:@ora.javabog.dk:1521:student","jacob","jacob"); tabeller i databasen (5 kolonner) TABLE_CAT TABLE_SCHEM TABLE_NAME TABLE_TYPE TABLE_REMARKS DatabaseMetaData null dmd = forb.getmetadata(); JANO KUNDER TABLE null System.out.println("DatabaseProductName = "+dmd.getdatabaseproductname()); null JANO PERSONER TABLE null System.out.println("DriverName = "+dmd.getdrivername()); System.out.println("MaxRowSize = "+dmd.getmaxrowsize()); ResultSet rs = dmd.gettables(null, kunder (2 kolonner) "JANO", "%", null); udskriv("tabeller NAVN i databasen", KREDIT rs); Jacob 1799 Statement Brian stmt = forb.createstatement(); 0 rs = stmt.executequery("select * from KUNDER"); udskriv("kunder", Hans rs); 500 public static void skrivformateret(string str) System.out.print(str); String KOL = " "; if (str.length()<kol.length()) System.out.print(KOL.substring(str.length()));
15 Opdatere og navigere i ResultSet De fleste ResultSet har metoder til at bevæge sig aktivt rundt i svaret og endda opdatere databasen gennem svaret. Det gøres med f.eks.: Statement stmt = con.createstatement(resultset.type_scroll_insensitive, ResultSet.CONCUR_UPDATABLE); ResultSet rs = stmt.executequery("select NAVN, KREDIT from KUNDER"); Derefter kan man navigere rundt i ResultSet-objektet med f.eks.: rs.absolute(3); // går til 3. række i svaret (regnet fra 1 af) rs.previous(); // går en række tilbage (modsatte af next()) rs.first(); // går til starten af svaret (svarende til rs.absolute(1)) rs.relative(3); // går 3 rækker frem, dvs. til 4. række int r = rs.getrow();// giver hvilken række vi nu er i (her returneres 4) Man kan ændre i data med f.eks.: rs.updatestring("navn", "Jakob"); // ændrer kundens navn til Jakob rs.updaterow(); // opdaterer rækken i databasen rs.movetoinsertrow(); // flyt til speciel indsættelses række rs.updatestring("navn", "Søren"); // sæt navn rs.updatedouble("kredit", 1000); // sæt kredit rs.insertrow(); // indsæt rækken i databasen rs.movetocurrentrow(); // gå væk fra speciel indsættelsesrække Derudover findes cancelrowupdates(), der annullerer opdateringer i en række, deleterow(), der sletter den aktuelle række fra både svaret og databasen, refreshrow(), der opfrisker ResultSet-objektet med de nyeste data.
16 JDBC RowSet Oracle: A thin wrapper around ResultSet object to make a JDBC driver look like a JavaBeans component RowSet = et sæt rækker hentet fra databasen =ResultSet+oprindelse+ændringer RowSet-objekter giver mulighed ny arbejdsform Man behøver kun at spørge på data (f.eks. med SELECT) hvorefter man får et RowSet-objekt. Når man skal opdatere nogle rækker, slette eller oprette nye, opererer man blot det eksisterende RowSet-objekt Slut med at rode med INSERT-, DELETE- eller UPDATE-sætninger i SQL. Flere undertyper af RowSet JdbcRowSet =ResultSet+oprindelse+ændringer CachedRowSet =rækkerne er gemt i hukommelsen kan altså eksistere afbrudt fra databasen! Undertyper: FilteredRowSet og JoinRowSet WebRowSet =CachedRowSet repræsenteret som XML
17 JdbcRowSet import java.sql.*; import javax.sql.*; import javax.sql.rowset.*; import com.sun.rowset.*; // Bemærk: rowset.jar fra Sun skal være i CLASSPATH public class BenytJdbcRowSet public static void main(string[] arg) throws Exception Class.forName("com.mysql.jdbc.Driver"); Connection con = DriverManager.getConnection("jdbc:mysql:///test"); JdbcRowSetImpl jrs = new JdbcRowSetImpl(con); // Lav forespørglen jrs.setcommand("select * FROM kunder WHERE navn =?"); jrs.setstring(1,"jacob"); jrs.execute(); // Udskriv resultatet while (jrs.next()) String navn = jrs.getstring("navn"); double kredit = jrs.getdouble("kredit"); System.out.println(navn+" "+kredit); Opdateringer? - skal indstille jrs Type og Concurrency - kun én table i SELECT! Data-integritet...?
18 CachedRowSet - off-line import java.sql.*; import javax.sql.*; import javax.sql.rowset.*; import com.sun.rowset.*; // Bemærk: rowset.jar fra Sun skal være i CLASSPATH public class BenytCachedRowSet public static void main(string[] arg) throws Exception Class.forName("com.mysql.jdbc.Driver"); Connection con = DriverManager.getConnection("jdbc:mysql:///test"); Statement stmt = con.createstatement(); ResultSet rs = stmt.executequery("select * FROM kunder"); CachedRowSetImpl crs = new CachedRowSetImpl(); crs.populate(rs); rs.close(); // Opdatér første række i CachedRowSet objektet crs.first(); crs.updatedouble("kredit", 2000); crs.updaterow(); // Indsæt række crs.movetoinsertrow(); crs.updatestring("navn", "Poul Nyrup"); crs.updatedouble("kredit", ); crs.insertrow(); crs.movetocurrentrow(); // Opdatér data i databasen crs.seturl("jdbc:mysql:///test"); crs.setusername("root"); crs.setpassword(""); crs.acceptchanges();
19 WebRowSet off-line; XML-output import com.sun.rowset.*; // Bemærk: rowset.jar fra Sun skal være i CLASSPATH <?xml version="1.0"?> public class BenytWebRowSet <webrowset xmlns=" <metadata> public static void main(string[] <column count>2</column count> arg) throws Exception <column definition> Class.forName("com.mysql.jdbc.Driver"); <column index>1</column index> Connection con = DriverManager.getConnection("jdbc:mysql:///test"); <column display size>32</column display size> Statement stmt = con.createstatement(); <column name>navn</column name> ResultSet rs = stmt.executequery("select <table name>kunder</table name> * FROM kunder"); <column type name>varchar</column type name> WebRowSetImpl wrs </column definition> = new WebRowSetImpl(); wrs.populate(rs); <column definition> rs.close(); <column index>2</column index> <column name>kredit</column name> // Generér XML <schema name></schema name> wrs.writexml(system.out); <table name>kunder</table name> <column type name>float</column type name> // Opdatér første </column definition> række i WebRowSet objektet wrs.first(); </metadata> wrs.updatedouble("kredit", <data> 3000); wrs.updaterow(); <currentrow> <columnvalue>jacob</columnvalue> // Indsæt række <columnvalue> </columnValue> wrs.movetoinsertrow(); </currentrow> wrs.updatestring("navn", <currentrow> "Fogh"); wrs.updatedouble("kredit", <columnvalue>brian</columnvalue> 72); wrs.insertrow(); <columnvalue>0.0</columnvalue> wrs.movetocurrentrow(); </currentrow> <currentrow> // Generér XML der nu <columnvalue>poul også omfatter ændringerne Nyrup</columnValue> wrs.writexml(system.out); <columnvalue> </columnvalue> </currentrow> // Opdatér data </data> i databasen wrs.seturl("jdbc:mysql:///test"); </webrowset> wrs.setusername("root"); wrs.setpassword(""); wrs.acceptchanges();
20 Login og brugeroprettelse Eksempel på javabønne Bemærk: Serveren kan klare brugervalidering for dig
21 JPA / Java Persistence API Bibliotek holder styr på binding mellem database og klasser Annotations Typisk brug EntityManagerFactory emf public nullable=false) private Integer length=30) private String length=50) private String password; ManagerFactory("ffproduction"); EntityManager emq = emf.createentitymanager(); Query allusersq = emq.createnativequery("select * from user",user.class); List<User> allusers = allusersq.getresultlist();
22 JPA / Java Persistence API Bibliotek holder styr på al opdatering Transaktioner EntityManager emenqueuejobs = emf.createentitymanager(); emenqueuejobs.gettransaction().begin(); job.setstate(ff.state_cancelled); emenqueuejobs.merge(job); emenqueuejobs.gettransaction().commit(); Opsætning (persistence.xml) <?xml version="1.0" encoding="utf-8"?> <persistence version="1.0" xmlns=" xmlns:xsi=" xsi:schemalocation=" <persistence-unit name="ffproduction" transaction-type="resource_local"> <provider>org.eclipse.persistence.jpa.persistenceprovider</provider> <class>ff.db.job</class> <class>ff.db.user</class> <properties> <property name="eclipselink.jdbc.driver" value="com.mysql.jdbc.driver"/> <property name="eclipselink.jdbc.url" value="jdbc:mysql://localhost/ff"/> <property name="eclipselink.jdbc.user" value="ff"/>
23 Åben Dokumentlicens Dette foredragsmateriale er under Åben Dokumentlicens (ÅDL) Du har derfor lov til frit at kopiere dette værk Bruger du dele af værket i et nyt værk, skal de dele, der stammer fra dette værk, igen frigives under ÅDL Den fulde licens kan ses på
Videregående programmering i Java
Videregående programmering i Java Dag 11 Persistens Fremlæggelse af programmering/status for projekter medbring klassediagram og skærmbillede Projektvejledning JNI og kald til maskinkode/c/c++ fra Java
Databaseadgang fra Java
Databaseadgang fra Java Grundlæggende Programmering med Projekt Peter Sestoft Fredag 2007-11-23 Relationsdatabasesystemer Der er mange databaseservere Microsoft Access del af Microsoft Office MySQL god,
Videregående programmering i Java
Videregående programmering i Java Dag 3 Skabende designmønstre Skabende designmønstre: Fabrikeringsmetode/Fabrik, Singleton, Abstrakt fabrik (Toolkit), Prototype, Objektpulje Eksempel: Forskellige slags
MySQL i Java. Tutorial lavet af Jákup W. Hansen TSU 2006 2.semester 05.januar 2007
MySQL i Java Tutorial lavet af Jákup W. Hansen TSU 2006 2.semester 05.januar 2007 Hvad er MySQL? Det er et database system, som er gratis for os at bruge. Det er lidt mere besværligt i starten at bruge
Eksempel på en database: studenter, kurser, eksamener
Udvidet Programmering 1999 Forelæsning 20, fredag 12. november 1999 Relationsdatabaser: relationer, tupler, attributter Forespørgselssproget SQL Databasesystemet PostgreSQL Tilgang til relationsdatabaser
Rigtig SQL Programmering
Rigtig SQL Programmering 1 SQL i Rigtige Programmer Indtil nu har vi brugt SQL direkte i kommandolinje promt/gui program, hvor vi kan lave forespørgsler til databasen I virkeligheden: Programmer kontakter
Indholdsfortegnelse Databaser og PHP... 3 Opgave... 4 Opgave... 5 Opgave... 6 Sidste opgave er en lille gæstebog... 7 Kilder og nyttige links:...
Indholdsfortegnelse Databaser og PHP... 3 Opgave... 4 Opgave... 5 Opgave... 6 Sidste opgave er en lille gæstebog... 7 Kilder og nyttige links:... 9 Nogle HTML tags... 9 Databaser og PHP Når vi snakker
Kursus i OOP og Java. Kursus i Objektorienteret programmering i Java
Kursus i OOP og Java Kursus i Objektorienteret programmering i Java Åben Dokumentlicens Dette foredragsmateriale er under Åben Dokumentlicens (ÅDL) Du har derfor lov til frit at kopiere dette værk Bruger
Introduktion til Oracle, Datalogi, RUC Af: Jens Lauterbach ([email protected]) 2002
Introduktion til Oracle, Datalogi, RUC Af: Jens Lauterbach ([email protected]) 2002 På datalogi har vi en databaseserver, som de studerende på datalogi kan benytte til projekter og som også benyttes i forbindelse
University of Southern Denmark Syddansk Universitet. DM503 Forelæsning 11
DM503 Forelæsning 11 Generics Pakker Exceptions Indhold Generics Nedarvning og Generics Generics Nedarvning og Generics Husk Box fra sidst Generics public class Box {! private T object;! public void
Web- og serverprogrammering
Web- og serverprogrammering Introduktion til web- og serverprogrammering - dag 1 Overblik over WSP, eller: de 3+x sprog i webprogrammering (HTML, CSS, JavaScript, plus x serverside-sprog) Installation
University of Southern Denmark Syddansk Universitet. DM502 Forelæsning 2
DM502 Forelæsning 2 Repetition Kompilere og køre Java program javac HelloWorld.java java HeloWorld.java Debugge Java program javac -g HelloWorld.java jswat Det basale Java program public class HelloWorld
Bilagsrapport til specialet Flash-light
Bilagsrapport til specialet Flash-light Af Filip Nicolaisen og Kasper Storm Afleveret Maj 2006 Vejledere: Mads Rosendahl (Datalogi) Bjørn Laursen (Kommunikation) Indholdsfortegnelse - Bilag Bilag 1. 1
Eksamens spørgsmål i Java HTML - DataBase 3. Semester (i)
Eksamens spørgsmål i Java HTML - DataBase 3. Semester (i) 1: KLASSE METODE KONSTRUKTØR EKS. PÅ TYPE (VARIABLE) PUBLIC/PRIVATE OBJECT UD FRA KLASSE KALD METODE TILFØR PARAMETER TIL METODE RETURNERE VARIBEL.
Øvelse 9. Klasser, objekter og sql-tabeller insert code here
Øvelse 9. Klasser, objekter og sql-tabeller Denne opgave handler om hvordan man opbevarer data fra databasekald på en struktureret måde. Den skal samtidig give jer erfaringer med objekter, der kommer til
BRP 6.9.2006 Kursusintroduktion og Java-oversigt
BRP 6.9.2006 Kursusintroduktion og Java-oversigt 1. Kursusintroduktion 2. Java-oversigt (A): Opgave P4.4 3. Java-oversigt (B): Ny omvendings -opgave 4. Introduktion til næste kursusgang Kursusintroduktion:
Views etc. Databaser
Views etc. Databaser Views Med Views kan vi gemme nogle af de lange select sætninger. I vores eksempel fra tidligere er det f.eks. forbundet med en del besvær at finde telefon nr og bilmærker for en sælger
Dag 10 Flertrådet programmering
Videregående programmering i Java Dag 10 Flertrådet programmering Fremlæggelse af programmering/status for projekter Dokumentation med javadoc Flertrådede designmønstre: Arbejdstråd, Producent Konsument,
Webserverprogrammering
Webserverprogrammering WSP fortsat - dag 11 Behandling af XML (StAX) Syndikering og RSS med XML JAXB - XML Java-objekter Projekthjælp Dette materiale er under Åben Dokumentlicens, se http://www.sslug.dk/linuxbog/licens.html
Videregående programmering i Java
Videregående programmering i Java Dag 6 Komponenter (og lidt Swing og MVC) Læsning: VP 4, evt. VP 6 Dette materiale er under Åben Dokumentlicens, se http://www.sslug.dk/linuxbog/licens.html Grafiske komponenter
Kursus navn: Indledende programmering Kursus nr. 02101
Danmarks Tekniske Universitet Side 1 af 8 sider Skriftlig prøve, den 15. december 2007 Kursus navn: Indledende programmering Kursus nr. 02101 Tilladte hjælpemidler: Alle skriftlige hjælpemidler Vægtning
Løsning af møntproblemet
Løsning af møntproblemet Keld Helsgaun RUC, oktober 1999 Antag at tilstandene i problemet (stillingerne) er repræsenteret ved objekter af klassen State. Vi kan da finde en kortest mulig løsning af problemet
RMI introduktion. Denne artikel beskriver Java RMI (Remtote Method Invocation).
Denne guide er oprindeligt udgivet på Eksperten.dk RMI introduktion Denne artikel beskriver Java RMI (Remtote Method Invocation). Den beskriver teorien bag RMI, viser et simpelt kode eksempel og forklarer
Jacob Nordfalk. Ingeniørhøjskolen i København. Nykøbing F itvisioncenter 24. februar 2004
Genbrugelige komponenter og designmønstre i Java Jacob Nordfalk Ingeniørhøjskolen i København Nykøbing F itvisioncenter 24. februar 2004 Program Om Jacob Nordfalk introduktion (ikke-teknisk del) Komponentbaseret
Videregående Programmering Obligatorisk opgave - 3. semester, efterår 2004
Overvågningssystem Beskrivelse Bagagesorteringssystemet består af et antal skranker (check-in) til modtagelse og registrering af bagage, et automatiseret sorteringsanlæg samt et antal terminaler (gates),
Anvendelse af metoder - Programmering
Denne guide er oprindeligt udgivet på Eksperten.dk Anvendelse af metoder - Programmering En forhåbentlig rigtig god forklaring på hvad metoder er og hvordan de anvendes. Lidt om private og public, retur
De vigtigste SQL-sætninger. SQL kap Oprette database. DDL og DML
SQL kap 6-7 + 17-20 DDL og DML 1 De vigtigste SQL-sætninger Data Definition Language (DDL) create table: opretter en ny tabel create unique index: tilføjer et index til en tabel drop table : sletter en
SWC eksamens-spørgsmål. Oversigt
SWC eksamens-spørgsmål Oversigt #1 Typer og variable #2 Aritmetik og logik #3 Klasser (definition, objekter) #4 Klasser (metoder) #5 Klasser (nedarvning, polymorfi) #6 Conditional statements #7 Repetition
Web- og serverprogrammering
Web- og serverprogrammering EJB dag 9 EJB (Enterprise Java Beans) Entitetsbønner til databasekommunikation Evt.: EJBQL (EJB Query Language) Evt.: EJB: Transaktioner og sikkerhed Læsning: WJSP kapitel 12
Hvordan vælger jeg dokumentprofilen?
Hvordan vælger jeg dokumentprofilen? Valget af OIOUBL profil i en konkret dokumentudveksling vil bl.a. afhænge af, hvilke OIOUBL profiler den anden part i udvekslingen understøtter. Et konkret eksempel
Database optimering - Indeks
Database optimering - Indeks Alle kender til dette irritations moment, hvor programmet man sidder og arbejder med, bare ikke er hurtigt nok. Selvom det kun drejer sig om få sekunder man sidder og venter,
En Kort Introduktion til Oracle
En Kort Introduktion til Oracle Henrik Bulskov 12. februar 2001 [email protected] 1 Start SQL*Plus... 1 1.1 TELNET... 1 1.2 WINDOWS SQL PLUS... 2 2 Kør et SQL-script... 3 3 Hjælp i SQL*Plus... 3 4 Editering
Database tips. Den forudsætter lidt kendskab til SQL men er for mindre erfarne. Denne guide er oprindeligt udgivet på Eksperten.dk
Denne guide er oprindeligt udgivet på Eksperten.dk Database tips Denne artikel vil give nogle forskellige små praktiske råd om ting man skal tænke på når man arbejder med databaser og applikationer som
Program Dokumentation PC Software Skrevet af. Gruppen. Version 1.0
Program Dokumentation PC Software Skrevet af Gruppen. Version 1.0 Indholds fortegnelse 1. INDLEDNING...3 1.1. FORMÅL...3 1.2. REFERENCER...3 1.3. VERSIONSHISTORIE...3 1.4. DEFINITIONER...3 1.5. DOKUMENTATIONENS
Introduktion til SQL queries
Denne guide er oprindeligt udgivet på Eksperten.dk Introduktion til SQL queries Denne artikel beskriver nogle forskellige muligheder i SQL queries. Eksemplerne skulle gerne være standard SQL og virke i
ODBC made easy på dansk (når bare man ved hvordan) Jesper Michelsen, Data warehouse & Analyse
ODBC made easy på dansk (når bare man ved hvordan) Jesper Michelsen, Data warehouse & Analyse Agenda Præsentation Hvad er ODBC? ODBC Datakildeadministrator System-DSN Distribution Fil-DSN Scriptede connections
Præsentation af BSK regionens identity and access management platform
Regionshuset It digital forvaltning BSK programmet Olof Palmens alle 17 [email protected] www.regionmidtjylland.dk Præsentation af BSK regionens identity and access management platform BrugerStamdataKataloget
SQL for MySQL-begyndere
Denne guide er oprindeligt udgivet på Eksperten.dk SQL for MySQL-begyndere I denne artikel vil jeg prøve at beskrive MySQL på begynderniveau. SQL står for Structured Query Language, og er et sprog til
//Udskriver System.out.println("Hej " + ditfornavn + " " + ditefternavn + "."); System.out.println("Du er " + dinalder + " aar gammel!
Denne guide er oprindeligt udgivet på Eksperten.dk Brugerinput i Java Denne her artikel gennemgår diverse ting ved brug af brugerinput i Java. Den starter med det simple og fortæller derefter skridt for
Database programmerings tips
Denne guide er oprindeligt udgivet på Eksperten.dk Database programmerings tips Denne artikel vil introducere nogle problem stillinger med flere samtidige brugere, som man skal tænke på, når man udvikler
Har du ikke fået oprettet et afdelings-id og PIN-kode til udskrivning på husets printere bedes du tage kontakt til receptionen først:
SOHO/NOHO Printer Installation til Windows (PC) - Version 2.0 Vigtig før du går i gang: Har du ikke fået oprettet et afdelings-id og PIN-kode til udskrivning på husets printere bedes du tage kontakt til
University of Southern Denmark Syddansk Universitet. DM502 Forelæsning 3
DM502 Forelæsning 3 Indlæsning fra tastatur Udskrift til skærm Repetition Beregning af middelværdi Gentagelse med stop-betingelse (while) Heltalsdivision Division med nul Type-casting ( (double) ) Betinget
Skriftlig opgave. Designtanker i database-nære systemer
Skriftlig opgave til eksamen for faget»databaser«designtanker i database-nære systemer Martin Ancher Holm Juni 2010 1 Intro Denne skriftlige opgave indeholder kort de daglige tanker jeg har omkring design
Bookie. IT-Universitetet i København. Grundlæggende Programmering. Eksamensprojekt. Forfattere: Sigrid Gyldenkærne Dalsgard Kasper Kronborg Isager
IT-Universitetet i København Grundlæggende Programmering Eksamensprojekt Bookie Forfattere: Sigrid Gyldenkærne Dalsgard Kasper Kronborg Isager Vejleder: Jesper Wendel Madsen 17. december 2014 Resumé Indhold
MySQL C API. Denne artikel beskriver hvordan man bruger MySQL C API. Der er beskrivelse af build med forskellige compilere.
Denne guide er oprindeligt udgivet på Eksperten.dk MySQL C API Denne artikel beskriver hvordan man bruger MySQL C API. Der er beskrivelse af build med forskellige compilere. Den forudsætter lidt kendskab
Bemærk! Et PHP script har kun brug for at forbinde én gang til databaseserveren. Det kan så sagtens udføre flere kommandoer vha. denne forbindelse.
Mysqli Webintegrator Når vi arbejder med server-side scripting ( i vort tilfælde PHP), har vi ofte behov for at kunne tilgå data, som vi opbevarer i en database. Det kan f.eks. dreje sig om nyhederne i
PROGRAM. using System; using System.Collections.Generic; using System.Text; using System.Collections;
PROGRAM using System; using System.Collections.Generic; using System.Text; using System.Collections; namespace EventManager class Program static void Main(string[] args) string hovedmenu = ""; string svar;
Integrationsmanual. Anvendelse af webservice til kursusoversigt i Campus. Brugervejledning til udviklere
Integrationsmanual Anvendelse af webservice til kursusoversigt i Campus Brugervejledning til udviklere Moderniseringsstyrelsen Webservice manual til udviklere 2016 1 1. Indholdsfortegnelse Nyt kapitel
Hvorfor skal vi bruge objekt orienteret databaser?
OODBMS Vs. RDBMS 1 Indholdsfortegnelse Hvorfor skal vi bruge objekt orienteret databaser?... 3 OODBMS i erhvervslivet... 4 Bagsiden af medaljen... 5 OODBMS i praksis... 6 Konklusion... 8 2 Hvorfor skal
SigmaT.
Java + Groovy Disposition Om SigmaT Eksempel på indlejring af Groovy Overvågning af PEM Ønske om dynamisk loaded Java uden at fifle med classloaderen Groovy til hjælp Opsamling hvad jeg ikke har fortalt
1 Domæne 2 1.1 Design valg... 2 1.1.1 User... 2. 2 Klassediagran 5
INDHOLD 1 Domæne 2 1.1 Design valg.................................... 2 1.1.1 User.................................... 2 2 Klassediagran 5 3 Serbio 7 3.1 Kommunikation..................................
Videregående programmering i Java
Videregående programmering i Java Dag 13 valgfrie emner Evt: Introduktion til J2EE og EJB Hvordan definere egne generics Evt.: Værktøjer til forbedring af kodekvalitet kodemetrikker og audit Projektvejledning
Dokumentering af umbraco artikeleksport:
Dokumentering af umbraco artikeleksport: Lav en artikel side 2-3. Installationsguide side 3-5. Opsættelse af databasen og web.config side 5-8. Umbraco: templates side 8. Umbraco: borger.dk tab side 8.
Løsning af skyline-problemet
Løsning af skyline-problemet Keld Helsgaun RUC, oktober 1999 Efter at have overvejet problemet en stund er min første indskydelse, at jeg kan opnå en løsning ved at tilføje en bygning til den aktuelle
Undtagelseshåndtering i C#
Denne guide er oprindeligt udgivet på Eksperten.dk Undtagelseshåndtering i C# I modsætning til C++ kan man i C# ikke skrive et program uden undtagelseshåndtering, så derfor har jeg skrevet denne guide
Fra idé til virkelig med Azure Mobile Services
Fra idé til virkelig med Azure Mobile Services Niels Ladegaard Beck Holion [email protected] @nielslbeck Windows Developers in Denmark Azure App Service Mobile App Introduktion til Azure Mobile Services Platform
A Profile for Safety Critical Java
A Profile for Safety Critical Java Martin Schoeberl Hans Søndergaard Bent Thomsen Anders P. Ravn Præsenteret af: Henrik Kragh-Hansen November 8, 2007 Forfatterne Martin Schoeberl Udvikler af JOP processoren
Abstrakte datatyper C#-version
Note til Programmeringsteknologi Akademiuddannelsen i Informationsteknologi Abstrakte datatyper C#-version Finn Nordbjerg 1/9 Abstrakte Datatyper Denne note introducerer kort begrebet abstrakt datatype
Excel som database i ASP via ADO
Denne guide er oprindeligt udgivet på Eksperten.dk Excel som database i ASP via ADO Viser hvordan excel kan bruges som database i ASP. Artiklen viser hvordan man henter, indsætter, opdater og sletter fra
Indholdsfortegnelse resultat- & kritikprogrammet.
Indholdsfortegnelse resultat- & kritikprogrammet. Ringsekretærers indtastning af resultater og kritikker... 2 Kom i gang Opstart af programmet... 2 En anden bruger er i gang med ringen... 3 Dommer ændringer
Test af It-komponent
Test af It-komponent I programmeringssproget Java Programmet Login service Elev: Mads Funch Klasse 2.4 Mat, It, Programmering Skole: Roskilde Tekniske Gymnasium HTX Underviser: Karl Dato: 31-08-2016 Side
Udvikling af DOTNET applikationer til MicroStation i C#
Udvikling af DOTNET applikationer til MicroStation i C# Praktiske tips for at komme i gang. Gunnar Jul Jensen, Cowi Hvorfor nu det? Mdl og Vba kan det hele Fordelene er : udviklingsmiljøet er eksternt
Indledning. Hvorfor det forholder sig sådan har jeg en masse idéer om, men det bliver for meget at komme ind på her. God fornøjelse med læsningen.
Indledning...2 Variabler...13 Eksempel: 1...13 Eksempel 2:...13 Eksempel 3:...15 Eksempel 4:...16 Metoder...17 Metode (intet ind og intet ud)...17 Metode (tekst ind)...18 Metode (tekst ind og tekst ud)...19
CV for Christian Plougmann Hag
CV for Christian Plougmann Hag Navn Christian Plougmann Hag Født 1970 Civilstand Gift, 2 børn IT-erfaring siden 1991 Personlig profil Christian er en kapacitet, der med sine mange års erfaring med J2EE/JavaEEsystemudvikling,
Interaktionsudvikling
Projektopgave 3: Interaktionsudvikling CPH business, klasse: MulA2013 Projektansvarlige undervisere Thomas Hartmann MereteGeldermann lützen: Projekt produkt url: www.amalieardahl.dk/projekt3/index.html
Optimering af dit trådløse net
Optimering af dit trådløse net Her er en lille guide til nogle forslag du selv kan gøre for at optimere dit trådløse net. Du skal dog være opmærksom på følgende: - Den hastighed du køber er garanteret
1 Start installation. 2 Vælg Kør. Installation af Næsgaard Mark.NET og konvertering af data
Installation af Næsgaard Mark.NET og konvertering af data Generelt Opdatér det gamle program til version 13.0 Tøm PocketMark Kode Denne vejledning beskriver, hvordan du installerer det nye Næsgaard Mark.NET
Threads i Java. Denne artikel giver en introduktion til threads i Java. Den beskriver hvad tråde er og forklarer hvordan de bruges i Java
Denne guide er oprindeligt udgivet på Eksperten.dk Threads i Java Denne artikel giver en introduktion til threads i Java. Den beskriver hvad tråde er og forklarer hvordan de bruges i Java Den forudsætter
