+ All Categories
Home > Documents > Embedded SQL i Java

Embedded SQL i Java

Date post: 12-Jan-2016
Category:
Upload: cosima
View: 59 times
Download: 1 times
Share this document with a friend
Description:
Embedded SQL i Java. nikos dimitrakas [email protected] 08-162099 rum 6626. Connolly/Begg(3rd edition) Kapitel 21 + 28.8 (4th edition) Kapitel 29.7 + Appendix E (5th edition) Kapitel 30.7.1, Appendix I. Vad är embedded SQL?. Värdspråk / Host Language Valfritt programmingsspråk Databas - PowerPoint PPT Presentation
27
IV1351 ht2010 nikos dimitrakas KTH/ICT/SCS 1 Embedded SQL i Java nikos dimitrakas [email protected] 08-162099 rum 6626 Connolly/Begg (3rd edition) Kapitel 21 + 28.8 (4th edition) Kapitel 29.7 + Appendix E (5th edition) Kapitel 30.7.1, Appendix I
Transcript
Page 1: Embedded SQL i Java

IV1351 ht2010nikos dimitrakasKTH/ICT/SCS

1

Embedded SQL i Java

nikos [email protected]

08-162099rum 6626

Connolly/Begg (3rd edition) Kapitel 21 + 28.8(4th edition) Kapitel 29.7 + Appendix E (5th edition) Kapitel 30.7.1, Appendix I

Page 2: Embedded SQL i Java

IV1351 ht2010nikos dimitrakasKTH/ICT/SCS

2

Vad är embedded SQL?

Värdspråk / Host Language

Valfritt programmingsspråk

Databas

En SQL-databas (relationsdatabas)

Embedded SQL

Hjälper värdspråket kommunicera med databasen.

Page 3: Embedded SQL i Java

IV1351 ht2010nikos dimitrakasKTH/ICT/SCS

3

Varför embedded SQL?

• Avancerad logik

• Gränssnitt mot databasen / Applikation

• Jobba med flera databaser

Page 4: Embedded SQL i Java

IV1351 ht2010nikos dimitrakasKTH/ICT/SCS

4

Java embedded SQL

• Javaprogram

• JDBC-driver

• (JDBC-ODBC bridge + ODBC-driver)

• Databas

Page 5: Embedded SQL i Java

IV1351 ht2010nikos dimitrakasKTH/ICT/SCS

5

Java embedded SQLArkitektur

Java Application

JDBC driver manager

DBMS

JDBC/ODBC bridge

ODBC Driver

JDBC Driver (DBMS Specific)

Page 6: Embedded SQL i Java

IV1351 ht2010nikos dimitrakasKTH/ICT/SCS

6

JDBC-programsekvens

1. Importerta paket

2. Registrera JDBC-Driver

3. Öppna en Connection till databasen

4. Skapa en Statement (eller PreparedStatement)

5. Exekvera en SQL-sats och ta emot resultatet (ett ResultSet) om resultat finns

6. Jobba med resultatet (om det finns)

(tillbaka till punkt 4)

7. Stäng ResultSet och Statement

(tillbaka till punkt 4)

8. Stäng Connection

Page 7: Embedded SQL i Java

IV1351 ht2010nikos dimitrakasKTH/ICT/SCS

7

Exempeldatabas

Page 8: Embedded SQL i Java

IV1351 ht2010nikos dimitrakasKTH/ICT/SCS

8

En URL (”databasadress”) består av tre delar:

jdbc:databastyp/ODBC:databasnamn/ODBC-alias

jdbc:mysql:///labb

jdbc:odbc:labb

ODBC-alias kan skapas i ODBC

Manager (”Data Sources (ODBC)”

i Administrative Tools i Control

Panel eller genom att köra

programmet odbcad32.exe

som finns i windows\system32):

Lämpligt för databaser som inte har en Java-driver, t ex MS Access

Connection URL / ODBC-alias

Page 9: Embedded SQL i Java

IV1351 ht2010nikos dimitrakasKTH/ICT/SCS

9

1. Importera Paket

//Import packages

import java.sql.*; //JDBC packages

//other packages

import java.util.*;

java.sql package specification:

http://java.sun.com/javase/6/docs/api/

Page 10: Embedded SQL i Java

IV1351 ht2010nikos dimitrakasKTH/ICT/SCS

10

//Load MySQL driverString driver = "com.mysql.jdbc.Driver";Class.forName (driver);

//Load JDBC-ODBC bridge driver Class.forName(”sun.jdbc.odbc.JdbcOdbcDriver”);

2. Registrera JDBC-Driver

Page 11: Embedded SQL i Java

IV1351 ht2010nikos dimitrakasKTH/ICT/SCS

11

3. Öppna en Connection till databasen

// DB access variables

String URL = "jdbc:mysql:///labb";

String userID = "root";

String password = "secretpassword";

//create a connection to the database

Connection con;

con = DriverManager.getConnection(URL, userID, password);

Page 12: Embedded SQL i Java

IV1351 ht2010nikos dimitrakasKTH/ICT/SCS

12

4. Skapa en Statement (eller PreparedStatement)

// Create a statement associated to the connection con.

// The new statement is placed in the variable stmt.

Statement stmt;

stmt = con.createStatement();

Page 13: Embedded SQL i Java

IV1351 ht2010nikos dimitrakasKTH/ICT/SCS

13

String query;

ResultSet rs;

// Set the SQL statement into the query variable

query = "SELECT stad, COUNT(*) AS antal FROM person GROUP BY stad";

// Execute the SQL statement that is stored in the variable query

// and store the result in the variable rs.

rs = stmt.executeQuery(query);

5. Exekvera en SQL-sats och ta emot resultatet

Page 14: Embedded SQL i Java

IV1351 ht2010nikos dimitrakasKTH/ICT/SCS

14

// Loop through the result set and print the results.

// The method next() returns false when there are no more rows.

while (rs.next())

{

System.out.print("Stad: " + rs.getString("stad"));

System.out.println(" Antal personer: " + rs.getInt("antal"));

}

6. Jobba med resultatet

Page 15: Embedded SQL i Java

IV1351 ht2010nikos dimitrakasKTH/ICT/SCS

15

// Close the variable stmt and release all resources

// bound to it.

// Any ResultSet associated to the Statement will be

// automatically closed too.

stmt.close();

7. Stäng ResultSet och Statement

Page 16: Embedded SQL i Java

IV1351 ht2010nikos dimitrakasKTH/ICT/SCS

16

4. Skapa en Statement (eller PreparedStatement)

// Set the SQL statment into the query variable

String query;

query = "SELECT fnamn, enamn, stad FROM person WHERE id IN (SELECT agare FROM bil WHERE marke = ?)";

// Create a statement associated to the connection and the query.

// The new statement is placed in the variable stmt.

PreparedStatement stmt;

stmt = con.prepareStatement(query);

Page 17: Embedded SQL i Java

IV1351 ht2010nikos dimitrakasKTH/ICT/SCS

17

String markeparam = “FORD”;

// Provide the value for the first ? in the SQL statement.

// The value of the variable markeparam will be sent to the

// database manager through the variables stmt and con.

stmt.setString(1, markeparam);

// Execute the SQL statement that is prepared in the

// variable stmt and store the result in the variable rs.

ResultSet rs;

rs = stmt.executeQuery();

5. Exekvera en SQL-sats och ta emot resultatet

Page 18: Embedded SQL i Java

IV1351 ht2010nikos dimitrakasKTH/ICT/SCS

18

// Loop through the result set and print the results.

// The method next() returns false when there are no more rows.

while (rs.next())

{

System.out.println(rs.getString("fnamn")+" "+rs.getString("enamn")+" "+rs.getString("stad"));

}

6. Jobba med resultatet

Page 19: Embedded SQL i Java

IV1351 ht2010nikos dimitrakasKTH/ICT/SCS

19

// Close the variable stmt and release all resources

// bound to it.

// Any ResultSet associated to the Statement will be

// automatically closed too.

stmt.close();

7. Stäng ResultSet och Statement

Page 20: Embedded SQL i Java

IV1351 ht2010nikos dimitrakasKTH/ICT/SCS

20

4. Skapa en Statement (eller PreparedStatement)

String query;

// Set the SQL statement into the query variablequery = "INSERT INTO person (fnamn, enamn, stad) VALUES

(?, ?, ?)";

// Create a statement associated to the connection and the query.

// The new statement is placed in the variable stmt.PreparedStatement stmt;stmt = con.prepareStatement(query);

Page 21: Embedded SQL i Java

IV1351 ht2010nikos dimitrakasKTH/ICT/SCS

21

String fnamnparam; String enamnparam; String stadparam;

// Provide the values for the ?'s in the SQL statement.// The value of the variable fnamnparam is first, // enamnparam is second and stadparam is third.stmt.setString(1, fnamnparam);stmt.setString(2, enamnparam);stmt.setString(3, stadparam);

// Execute the SQL statement that is prepared in the variable stmtstmt.executeUpdate();

5. Exekvera en SQL-sats

Page 22: Embedded SQL i Java

IV1351 ht2010nikos dimitrakasKTH/ICT/SCS

22

// Close the variable stmt and release all resources

// bound to it.

stmt.close();

7. Stäng Statement

Page 23: Embedded SQL i Java

IV1351 ht2010nikos dimitrakasKTH/ICT/SCS

23

// Close the connection

con.close();

8. Stäng Connection

Page 24: Embedded SQL i Java

IV1351 ht2010nikos dimitrakasKTH/ICT/SCS

24

Datatyper

Datatyper i databasen måste kunna mappas till datatyper/klasser i Java:

• SQL integer Java int

• SQL number, real, etc Java float/double

• SQL varchar, char, string, etc Java String

• SQL date, time, timestamp, etc Java java.sql.Date, java.sql.Time, java.sql.Timestamp

Läs mer i API för java.sql.ResultSet

Page 25: Embedded SQL i Java

IV1351 ht2010nikos dimitrakasKTH/ICT/SCS

25

Mer information

JDBC (SUN):

http://java.sun.com/products/jdbc/overview.html

Page 26: Embedded SQL i Java

IV1351 ht2010nikos dimitrakasKTH/ICT/SCS

26

Labb

• QUIZ 4 bör göras först.

• MySQL– Hämta databasskriptet!

– Kör databasskriptet för att skapa databasen!

• Access– Hämta databasen!

– Skapa ett ODBC-alias!

• Hämta exempelprogrammet!

• Kompilera och testa exempelprogrammet!

• Implementera 3 nya frågor!

• Kompilera det nya programmet!

• Kör programmet och visa koden för en av handledarna!

Page 27: Embedded SQL i Java

IV1351 ht2010nikos dimitrakasKTH/ICT/SCS Demo

• Hämta MySQL-databasskriptet!

• Kör databasskriptet för att skapa databasen!

• Hämta exempelprogrammet (MySQL-versionen)!

• Kompilera och testa exempelprogrammet!

• Hämta Access-versionen av databasen

• Skapa ett ODBC-alias till databasen

• Hämta exempelprogrammet (ODBC-versionen)!

• Kompilera och testa exempelprogrammet!

• Testa MySQL via ODBC!

27


Recommended