11 universele database api’s: odbc, jdbc, sqlj, ole db en ado
Post on 02-Jan-2016
40 Views
Preview:
DESCRIPTION
TRANSCRIPT
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
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
top related