11 universele database api’s: odbc, jdbc, sqlj, ole db en ado

23
11 Universele database API’s: ODBC, JDBC, SQLJ, OLE DB en ADO

Upload: deanna-blankenship

Post on 02-Jan-2016

40 views

Category:

Documents


0 download

DESCRIPTION

11 Universele database API’s: ODBC, JDBC, SQLJ, OLE DB en ADO. De database API. Classificatie van de database API. Verband tussen soort API en binding time. ODBC. JDBC. Statement interface. Statement interface. Statement interface. Resultset en Rowset interface. - PowerPoint PPT Presentation

TRANSCRIPT

11 Universele database API’s:ODBC, JDBC, SQLJ, OLE DB

en ADO

De database APIDe database API

Database- specifieke

API

client databaseserver atabaseserver

Server- interface

SQL

Client-

applicatie

Client-

applicatie

figuur 11.1 Functie van de database API

Classificatie van de database APIClassificatie van de database API

Precompilatie

Compilatie en linking

Uitvoering

early

late

Database API

Server- interface

figuur 11.2 Illustratie van SQL binding time

Verband tussen soort API en Verband tussen soort API en binding timebinding time

SQL in ‘stored procedure’

Statische SQL Dynamische SQL

Embedded API

Call-level API

SQL ingebed in gasttaal

SQL als parameter van procedure-

aanroep

figuur 11.3 Verband tussen SQL binding time en type database API

ODBCODBC

ODBC-API

ODBC Driver Manager

SPI

...

Client-applicatie

DBMS-speci- fieke API A

Driver C

DBMS Type C

DBMS Type B

DBMS Type A

Driver B Driver A

DBMS-speci- fieke API B

DBMS-speci- fieke API C

Server interface A

Server interface B

Server interface C

figuur 11.4 Architectuur van ODBC

JDBC-API

JDBC DriverManager

JDBC Driver API

...

Java-applicatie of applet

DBMS-speci- fieke API A

ODBC bridge JDBC Driver A

Net protocol

ODBC Driver C

JDBC-Net Driver

DBMS-speci- fieke API C

DBMS Type C

DBMS Type B

DBMS Type A

Server interface A

Server interface B

Server interface C

Net protocol

ODBC

figuur 11.5 Architectuur van JDBC

JDBCJDBC

DriverManager

Connection

Statement

ResultSet

registerDriver(mijnDriver) getConnection(mijnUrl)

createStatement()

executeQuery(mijnQuery)

next() getXXX(index)

Client

figuur 11.6 Objecten betrokken bij JDBC-aanroepen

Statement interface

Statement interface

Statement interface

Resultset en Rowset interface

Resultset en Rowset interface

Resultset en Rowset interface

Transactiemanagement in JDBC

Een voorbeeld van Een voorbeeld van databasetoegang met JDBCdatabasetoegang met JDBC

// ------> Initialisatie int Levnr; String Levnaam; // ------> Connectie opzetten DriverManager.registerDriver(new sun.jdbc.odbc.JdbcOdbcDriver()); Connection mijnConnectie = DriverManager.getConnection(“jdbc:odbc:AOADM”); Statement mijnStatement = mijnConnectie.createStatement(); // ------> Query uitvoeren ResultSet mijnResultSet = mijnStatement.executeQuery( “select leveranciersnummer, leveranciersnaam from leveranciers where levstatus > 80”); // ------> Resultaat bekijken while (mijnResultSet.next()) { Levnr = mijnResultSet.getInt(1); Levnaam = mijnResultSet.getString(2); System.out.println(Levnr + “: ” + Levnaam); }; // ------> Afsluiten mijnStatement.close(); mijnConnectie.close();

figuur 11.14 Voorbeeld van een Java-programma dat gebruik maakt van JDBC

SQLJSQLJ

Uitvoerbare Java-bytecode met JDBC-calls

Java-broncode met embedded SQL

Java-broncode met JDBC-calls

DBMS

SQLJ Translator

Java compiler

Precompilatie

Compilatie

Uitvoering

SQLJ Runtime en JDBC Driver

figuur 11.15 Uitvoering van SQLJ-code

// ------> Initialisatie int Levnr; String Levnaam; // ------> Iterator definiëren in SQLJ #sql iterator LeveranciersIterator(int, String); // ------> Connectie opzetten DriverManager.registerDriver(new sun.jdbc.odbc.JdbcOdbcDriver()); Connection mijnConnectie = DriverManager.getConnection(“jdbc:odbc:aoadm”); // ------> Default context definiëren DefaultContext.setDefaultContext(new DefaultContext(mijnConnectie)); // ------> Iterator definiëren in Java LeveranciersIterator mijnLeveranciersIterator; // ------> Query uitvoeren #sql mijnLeveranciersIterator = {select leveranciersnummer, leveranciersnaam from leveranciers where levstatus > 80}; // ------> Resultaat bekijken while (true) { #sql {fetch :mijnLeveranciersIterator into :Levnr, :Levnaam}; System.out.println(Levnr + “: ” + Levnaam); if (mijnLeveranciersIterator.endFetch()) break; }

figuur 11.16 Voorbeeld van een Java-programma dat gebruik maakt van SQLJ

Voorbeeld van databasetoegang Voorbeeld van databasetoegang met behulp van SQLJmet behulp van SQLJ

OLE DB

Databasetoegang met behulp van ADO en OLE DB

Databasetoegang met behulp van ADO en OLE DB

Databasetoegang met behulp van ADO en OLE DB

Databasetoegang met behulp van ADO en OLE DB