• Non ci sono risultati.

Accesso remoto al DB

N/A
N/A
Protected

Academic year: 2021

Condividi "Accesso remoto al DB"

Copied!
29
0
0

Testo completo

(1)

JDBC

Java DataBase Connectivity

CORSO DI ALGORITMI E PROGRAMMAZIONE

Anno Accademico 2002-2003

(2)

Accesso remoto al DB

Utente Host client

Host server

DataBase Istruzioni

SQL

Server di DataBase Rete

(3)

Accesso remoto al DB

• JDBC fornisce uno strato di accesso verso database completo e soprattutto ad oggetti

• Accesso generalizzato a livello applicazione

• Indipendenza dal tipo di DataBase

• Uso di driver forniti dal produttore di

DataBase

(4)

Architettura software

Java Application JDBC API

JDBC Driver Manager

JDBC-ODBC Bridge Pure Java JDBC Driver ODBC

Database Server Host Client

Host server

(5)

Accesso remoto al DB PostgreSQL

Utente Host client

Host server Linux PostgreSQL

Istruzioni SQL

Server di DataBase Rete

•Utilizza drivers JDBC scritti interamente in Java

(6)

• Applicativo java come front-end al Database

• Connessione diretta tramite rete, con protocollo proprietario

• Server di Database relazionale ad oggetti

• PostgreSQL fornisce le classi java jdbc per il client

Accesso remoto al DB

PostgreSQL

(7)

PostgreSQL Pure Java JDBC Host Client

PostgreSQL

JDBC Java Application

PostgreSQL DataBase Server Host server

(8)

Accesso remoto al DB Microsoft ODBC

Utente

Host client Host remoto

Istruzioni SQL

DataBase ODBC Layer Rete

•Utilizza drivers JDBC-ODBC bridge

Archivi locali

(9)

ODBC Layer

• Interfaccia intermedia del Client per connettersi al database

• Rappresenta una serie di “C-Level API”

• Dipendente dalla piattaforma Microsoft

• Drivers non scritti in puro Java

(10)

General Application

ODBC Layer

Host remoto Host

Client

ODBC Layer

Access

ODBC Driver Manager

Excel Paradox dBase Oracle JDBC Java Application

JDBC-ODBC Bridge

DataBase su host remoto

(11)

Esempio: uso di AccessApp

Applicazione java per il front-end ad un DataBase

DataBase remoto

(12)

Permette di impostare comandi e query SQL al DataBase remoto e di visualizzarne i risultati.

Richiede:

• Driver jdbc, classe principale in Java

• URL al database. Dipende dal driver impostato

• Eventuale utente con diritti di accesso al DataBase. Per comodita’ non e’ richiesta password

AccessApp

(13)

Esempio: uso di AccessApp per PostgreSQL

Utente Portatile

collegato alla rete

del dipartimento Server Linux con

Indirizzo IP: 192.167.30.130 DataBase di nome: javadb

PostgreSQL Internet

(14)

Occorre prima aggiungere alla directory locale

jre/lib/ext della propria JVM usata per eseguire AccessApp, la libreria jdbc7.1-1.2.jar I numeri 7.1-1.2 dipendono dalla versione della

libreria. Essa contiene tutte le classi Java usate per accedere a PostgreSQL mediante JDBC.

Viene fornita con PostgreSQL

AccessApp

per PostgreSQL

(15)

Driver: org.postgresql.Driver

E’ la classe Java principale (driver) per accedere a PostgreSQL

URL:

jdbc:postgresql://host-server/nome-DB Rappresentazione standard usata per referenziare una

risorsa in Internet. Specifica protocollo, host-server e DataBase a cui connettersi

AccessApp

per PostgreSQL

(16)

Esempio:

Driver: org.postgresql.Driver

URL:

jdbc:postgresql://192.167.30.130/javadb

USER: javauser

SQL: select * from alunni

Si collega al DataBase javadb presente sul server

192.167.30.130 come utente javauser ed esegue la query

AccessApp

per PostgreSQL

(17)

AccessApp per PostgreSQL

Esempio di query select

(18)

Esempio: uso di AccessApp con Microsoft ODBC

Occorre registrare il DataBase presso l’amministratore dati ODBC

Nel Pannello di controllo, icona

Origine dati ODBC(32 bit)

(19)

Microsoft ODBC

1. DSN di sistema 2. Pulsante Aggiungi

1

2

(20)

Microsoft ODBC

Esempio: si vuole registrare un archivio locale di Access

2 1

1. Microsoft Access Driver 2. Pulsante Fine

(21)

Microsoft ODBC

1. nome ODBC

2. Pulsante Seleziona

3. Selezione del file Access

1

2

3

(22)

Microsoft ODBC

• Il nome origine dati (nome ODBC=accessdb) deve essere univoco poiche’ identifica il

DataBase selezionato

• Il nome ODBC verra’ specificato con JDBC per accedere al DataBase corrispondente.

(23)

Esempio:

Driver: sun.jdbc.odbc.JdbcOdbcDriver

URL: jdbc:odbj:accessdb

USER:

SQL: select * from alunni

Si collega al DataBase accessdb che referenzia un archivio Access locale. Non richiede un utente specifico.

AccessApp

per ODBC

(24)

AccessApp per ODBC

Esempio di query select

(25)

Esempio: StatementODBC

Semplice applicazione Java per eseguire comandi SQL su un DataBase ODBC. Sintassi:

java StatementODBC nome-ODBC istruzione-sql

Esempio:

java StatementApp accessdb “select * from alunni”

Le istruzioni necessarie per collegarsi ad un database sono:

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

carica il driver specificato. In questo caso usa JdbcOdbc bridge

Connection conn =

DriverManager.getConnection("jdbc:odbc:accessdb","","");

tenta la connessione al database accessdb. No user, no password

(26)

StatementODBC

Se la connessione al DB va a buon fine, la chiamata del metodo torna un oggetto di tipo Connection col quale si crea un oggetto

Statement tramite il quale è possibile effettuare la query sul database:

Statement stm = conn.createStatement();

ResultSet rs =

stm.executeQuery(“select * from alunni”);

L’oggetto ResultSet rappresenta il risultato di una query come sequenza di record che si ottiene mediante un ciclo while sul metodo rs.next();

(27)

StatementODBC

Un semplice esempio che stampa solo la prima colonna di un

ResultSet ottenuto dall’esecuzione di una query:

while (rs.next()) {

System.out.print(rs.getString(1));

}

Il metodo rs.getString(1); torna il valore della prima colonna del record corrente. Si cicla mentre ci sono ancora record da stampare, ovvero rs.next() torna il valore true.

Nel programma si usa il metodo displayResult(rs), più

completo e generalizzato, che stampa anche il nome di ogni colonna e il carattere | come separatore di campo di ogni record.

(28)

Codice di StatementODBC

import java.sql.*;

class StatementODBC {

public static void main(String args[]) { if(args.length!=2){

System.out.println("Scrivere: java StatementODBC nome-ODBC sql");

System.out.println("Esempio: java StatementODBC accessdb \"select * from alunni\"");

System.exit(0);

} try{

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

String url="jdbc:odbc:"+args[0];

Connection conn = DriverManager.getConnection(url,"","");

Statement stm = conn.createStatement();

ResultSet rs = stm.executeQuery(args[1]);

if(rs!=null) displayResults(rs);

conn.close();

}catch(Exception ex){

System.out.println(ex);

System.exit(0);

}

} // metodo main

(29)

Codice di StatementODBC

static void displayResults(ResultSet r) throws SQLException {

ResultSetMetaData rmeta = r.getMetaData();

// stampa i nomi delle colonne

int numColumns=rmeta.getColumnCount();

for(int i=1;i<=numColumns;++i) { if(i<numColumns)

System.out.print(rmeta.getColumnName(i)+" | ");

else

System.out.println(rmeta.getColumnName(i));

}

// stampa i dati di ogni riga while(r.next()){

for(int i=1;i<=numColumns;++i) { if(i<numColumns)

System.out.print(r.getString(i)+" | ");

else

System.out.println(r.getString(i).trim());

} // for } // while

} // metodo displayResults } // classe StatementApp

Riferimenti

Documenti correlati

 gli atti preparatori di atti di pianificazione e di programmazione.  gli atti relativi agli appalti e alle aggiudicazioni per i quali l’accesso è disciplinato dal codice dei

L'accesso civico generalizzato è rifiutato se il diniego è necessario per evitare un pregiudizio concreto alla tutela della sicurezza pubblica e ordine pubblico, sicurezza

Il procedimento di accesso civico deve concludersi con provvedimento espresso e motivato nel termine di trenta giorni (art. 6, del decreto trasparenza) dalla presentazione

13 del Regolamento (UE) 2016/679 (GDPR), si informa che i dati da Lei forniti saranno utilizzati per lo svolgimento dell’istruttoria relativa all’istanza e saranno

7. Il Responsabile della prevenzione della corruzione può chiedere in ogni momento agli uffici informazioni sull’esito delle istanze. Il personale tutto dell’AMAT

Se l’accesso generalizzato è stato negato o differito a tutela della protezione dei dati personali in conformità con la disciplina legislativa in materia, il Responsabile

Il PDF/A è una particolare versione del formato PDF che garantisce l'inalterabilità e l'immutabilità nel tempo del contenuto e della struttura dei documenti informatici; per

4. Nel caso di istanze per l’ accesso civico il Responsabile della prevenzione della corruzione e trasparenza ha l’obbligo di segnalare, in relazione alla loro gravità, i