Databaseadgang fra Java



Relaterede dokumenter
Eksempel på en database: studenter, kurser, eksamener

MySQL i Java. Tutorial lavet af Jákup W. Hansen TSU semester 05.januar 2007

Web- og serverprogrammering

Opret ODBC datakilde Vejledning

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.

Indholdsfortegnelse Databaser og PHP... 3 Opgave... 4 Opgave... 5 Opgave... 6 Sidste opgave er en lille gæstebog... 7 Kilder og nyttige links:...

De vigtigste SQL-sætninger. SQL kap Oprette database. DDL og DML

Rigtig SQL Programmering

ODBC made easy på dansk (når bare man ved hvordan) Jesper Michelsen, Data warehouse & Analyse

PID2000 Archive Service

Listen over reserverede ord er meget lang, men de væsentligste vil jeg beskrive her i denne artikel:

Introduktion til Oracle, Datalogi, RUC Af: Jens Lauterbach 2002

SQL for MySQL-begyndere

Introduktion til SQL queries

En Kort Introduktion til Oracle

PHP Snippets. De små korte. Skrevet af Daniel Pedersen

PHP 3 UGERS FORLØB PHP, MYSQL & SQL

Videregående programmering i Java

Opsætning af MobilePBX med Kalenderdatabase

Bilagsrapport til specialet Flash-light

Samspillet mellem databaser og kort styres af GeoCAD programmet GeoDB.

1 Domæne Design valg User Klassediagran 5

Database programmerings tips

HTML, PHP, SQL, webserver, hvad er hvad??

Begrænsninger i SQL. Databaser, efterår Troels Andreasen

Umbraco installationsvejledning

DB undervisning 01-01

EasyIQ Opdatering > 5.4.0

Opgave 1. Opret de 4 tabeller i FTSFrontend programmet. Indsæt mindst 3 forskellige tabelværdier i kunder, målerstatus, byer og regning..

Eksamens spørgsmål i Java HTML - DataBase 3. Semester (i)

MySQL C API. Denne artikel beskriver hvordan man bruger MySQL C API. Der er beskrivelse af build med forskellige compilere.

Installation af Elektronisk APV på flere PC er

Views etc. Databaser

Systemair Connect. Opsætning

Opdatering af ISOWARE til version 6.1.0

Introduktion til programmering

En opsamling af artefakter for Hotel Databasen som REST-service Bygger på Hotel opgaven i 8 trin

University of Southern Denmark Syddansk Universitet. DM503 Forelæsning 11

Excel som database i ASP via ADO

Bookie. IT-Universitetet i København. Grundlæggende Programmering. Eksamensprojekt. Forfattere: Sigrid Gyldenkærne Dalsgard Kasper Kronborg Isager

Videregående Programmering Obligatorisk opgave - 3. semester, efterår 2004

Installation og Drift. Aplanner for Windows Systemer Version 8.15

Opsætning af Oracle Designer 10g repositorie

KIH Database. Systemdokumentation for KIH Databasen. 1. maj Side 1 af 13

Instruktioner i installation og afinstallation af Windows PostScript- og PCLprinterdrivere

Videregående programmering i Java

Eksamen, DSDS, efterår 2007

Øvelse 9. Klasser, objekter og sql-tabeller insert code here

Opsætning af Outlook til Hosted Exchange 2003

DPR lokal persondatabase. Checkliste for CPR migrering

SQL Server 2008 Spatiale eksempler. Plan & Miljø, GIS

Data lagring. 2. iteration (implement backend)

Programmering I Java/C#

Hvordan opretter jeg MultiUser med en access-database?

! Kia Dahlen. Kamilla Klein, Pia Jensen og Maria Korshøj Andersen.

Hvordan opretter jeg en ODBC-forbindelse til en MySql-database?

Delphi og Databaser for begyndere

Installation af MySQL server på PC

OpenTele datamonitoreringsplatform

IBM Network Station Manager. esuite 1.5 / NSM Integration. IBM Network Computer Division. tdc - 02/08/99 lotusnsm.prz Page 1

Zapier-integration mellem MailChimp og webcrm hos Azalea IT

Advanced Word Template Brugermanual

Opsætning af udviklerversion af Microsofts open source XDS.b fra Codeplex Projekt: Net4Care Version: V0.1,

University of Southern Denmark Syddansk Universitet. DM502 Forelæsning 2

Opgraderingsvejledning: Fra LDV til LDV 2.4.0

Import fra C Revisor Informatik ApS

Database tips. Den forudsætter lidt kendskab til SQL men er for mindre erfarne. Denne guide er oprindeligt udgivet på Eksperten.dk

Program Dokumentation PC Software Skrevet af. Gruppen. Version 1.0

The Design Diaries Project 3 2. Semester. Blog om designprincipper

BIOGRAFBOOKING-SYSTEM

Sådan installeres og teste WordPress på en lokal server

VÆR EFFEKTIV SOM SAS PROGRAMMØR MED SAS ENTERPRISE GUIDE 7.12 GEORG MORSING

Transkript:

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, enkel, nem at installere PostgreSQL mere omfattende Microsoft SQL Server robust og kompleks Oracle meget robust og kompleks IBM DB2 meget robust og kompleks Apache Derby indlejret Java-database snesevis af andre MySQL, Postgres og Derby er open source og gratis at benytte 1

Opsætning for Java og MS Windows Simpleste tilgang: Brug JDBC = Java Database Connectivity og ODBC = Open Database Connectivity Brug pakke java.sql Gør dette: Opret et Data Source Name (DSN) Det giver et lokalt navn til en database Brug dette DSN fra dit Java program JDBC = Java Database Connectivity JDBC Ensartet interface til mange databaser Lokal database, fx MS Access Fjern database, fx MySQL, MS SQL, Oracle, Postgres, DB2,... Databaseserver, JDBC, Java-program Databaseserver Java-program JDBC 2

Opsætning af lokal database under MS Windows Opret et Data Source Name (DSN): Start -> Control panel -> Administrative tools -> Data Sources (ODBC) -> User DSN -> MS Access Database Data Source Name: northwind-sample Database: C:\Northwind.mdb -> Test data source -> OK Eksempeldatabasen Northwind fra Access 3

Java kode til at forbinde til en DSN (del af sandheden) import java.sql.*; public class ReadAccessDatabase { public void openandquery() { Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); Connection conn = DriverManager.getConnection("jdbc:odbc:northwind-sample");... brug conn til at tilgå databasen... if (conn!= null) conn.close(); Find driver Forbind til DSN northwind-sample... med JBDC og OBDC protokollen Brug forbindelsen Luk efter brug, ellers Lidt mere af sandheden: Exceptions Der er meget der kan gå galt: Databasen findes ikke Vi har ikke lov at bruge den Netværket er nede så vi kan ikke nå den MySQL databasedriveren er ikke installeret... osv Java-programmet må håndtere disse fejl Brug try { catch( ) { sætningen som forklaret B&K kapitel 12 4

Håndtering af ting der kan gå galt Hvis databasefejl Hvis driver ikke findes public class ReadAccessDatabase { public void openandquery() throws SQLException, ClassNotFoundException { Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); Connection conn = DriverManager.getConnection("jdbc:odbc:northwind-sample");... brug conn til at tilgå databasen... if (conn!= null) conn.close(); Brug databaseforbindelsen til noget (filling in the dots) Udfør SQLforespørgsel på databasen Statement stmt = conn.createstatement(); String query = "SELECT Country FROM Customers"; boolean ok = stmt.execute(query); if (ok) { ResultSet res = stmt.getresultset(); while (res.next()) { String country = res.getstring(1); System.out.println(country); Hvis OK, så hent result set Hent hver post i result set Første element i posten, som streng 5

public void openandquerycountry(string country) throws SQLException, ClassNotFoundException {... String query = "SELECT CompanyName FROM Customers WHERE Country = " + "'" + country + "'"; boolean ok = stmt.execute(query); if (ok) { System.out.println("Companies in " + country + ":"); Opbyg forespørgsel i Java: Find firmaer i et bestemt land System.out.println("--------------"); ResultSet res = stmt.getresultset(); while (res.next()) { String companyname = res.getstring(1); System.out.println(companyName); System.out.println("--------------"); if (conn!= null) conn.close(); Opbyg SQLforespørgsel som streng Konfiguration af fjern database under MS Windows Opret et Data Source Name (DSN): Start -> Indstillinger -> Kontrolpanel -> Administration -> Datakilder (ODBC) -> User DSN -> Add -> MySQL ODBC 3.51 Driver Data Source Name: mysql-sestoft Host: mysql.itu.dk Database name: sestoft User: sestoft Password: ******* -> Test Data Source 6

Opret MySQL database på ITU s server Log ind på mit.itu (bruger, password) -> Andre ITU links, studenterdatabaser -> Opret ny database -> Indtast mail-brugernavn & password -> Databasenavn: sestoft -> Databasebrugernavn: sestoft -> Databasepassword: ******* Serveren hedder mysql.itu.dk Kan bruges fra ssh.itu.dk sådan her: mysql -h mysql.itu.dk sestoft -p Navn på host = servermaskinen Navn på databasen Brug password Opret tabel med SQL Tabellen Theatre har fire kolonner: id, name, rows, seatsperrow CREATE TABLE Theatre (id INT, name TEXT, rows INT, seatsperrow INT); 7

Indsæt data med SQL INSERT INTO Theatre VALUES (1, Lille sal, 8, 10); INSERT INTO Theatre VALUES (2, Mellem sal, 11, 12); mysql> SELECT * FROM Theatre; +------+------------+------+-------------+ id name rows seatsperrow +------+------------+------+-------------+ 1 Lille sal 8 10 2 Mellem sal 11 12 +------+------------+------+-------------+ 2 rows in set (0.00 sec) Læse salsdata fra Java-program Først, en klasse til at have resultatet i: class Theatre { public final String name; public final int rows, seatsperrow; public Theatre(String name, int rows, int seatsperrow) { this.name = name; this.rows = rows; this.seatsperrow = seatsperrow; 8

Læs en bestemt sals data public Theatre openandquery(int theatreid) throws SQLException, ClassNotFoundException, Exception { conn =...; String query = "SELECT name, rows, seatsperrow FROM Theatre" + " WHERE id=" + theatreid; boolean ok = stmt.execute(query); Theatre sal = null; if (ok) { ResultSet res = stmt.getresultset(); if (res.next()) { String name = res.getstring(1); int rows = res.getint(2); int seatsperrow = res.getint(3); sal = new Theatre(name, rows, seatsperrow); else { throw new Exception("Sal " + theatreid + " findes ikke"); return sal; Andre nyttige SQL-elementer Opdater felt i en eller flere poster: UPDATE Theatre SET rows = 13 WHERE id = 2; Slet en eller flere poster: DELETE FROM Theatre WHERE id = 2; Fjern en hel tabel (NB: ingen undo!) DROP TABLE Theatre; 9

Udtræk med gruppering og sortering Find for hvert rækkeantal hvor mange sale der har det antal rækker; vis resultat i faldende orden af antal sale: SELECT rows, COUNT(*) AS count FROM Theatre GROUP BY rows ORDER BY count DESCENDING; Se også http://java.sun.com/docs/books/tutorial/jdbc/ http://www.matfys.kvl.dk/databehandling/mysql.html 10