Documentazione del componente ODBC
Il
componente Gambas ODBC utilizza l'API fornita dal gestore dei driver
unixODBC, quindi avere
unixODBC installato e funzionante è un prerequisito per utilizzare le funzioni odbc in un'applicazione Gambas.
Questa documentazione è un riferimento a Gambas come introduzione generale all'ODBC in Unix o Linux, per un modo completo di installazione di riferimento, consultare queste pagine:
ODBC Generale
Open Database Connectivity, comunemente ODBC, è una specifica aperta per fornire agli sviluppatori di applicazioni un'API prevedibile con cui accedere alle origini dati. Un motore ODBC necessita di un driver per poter interagire con tipi di database specifici.
Ci sono due scelte:
UnixODBC e
iODBC. Gambas supporta e compila solo UnixODBC. La specifica ODBC utilizza i cosiddetti Nomi di Origine Dati (
Data Source Names o DSN) per connettersi a diversi DBMS.
Informazioni sulle installazioni UnixODBC
Le distribuzioni Linux offrono pacchetti per l'installazione manuale. Ad esempio, nella distribuzione OpenSuse, il pacchetto
unixODBC è diviso in due parti, il pacchetto unixODBC di base che fornisce tutte le librerie e le funzionalità di base (ma che non fornisce la parte GUI), e il pacchetto che contiene la parte GUI (cerca e installa la parte GUI come pacchetto separato). Se preferisci compilare da solo il pacchetto
unixODBC puoi scaricare il codice sorgente dal sito web unixODBC
http://www.unixodbc.org segui le istruzioni di compilazione e installazione fornite con il pacchetto. Tieni presente che alcune distribuzioni sono fornite con file di sviluppo separati in un pacchetto "devel", ad esempio in OpenSuse i cui pacchetti sono chiamati unixodbc-devel.
I driver sono i componenti UnixODBC necessari per connettersi a ciascun diverso tipo di DataBase e non sono inclusi o forniti dal pacchetto
unixODBC principale in nessuna distribuzione Linux. Ad esempio, il driver relativo al
connettore mysql odbc consente alla infrastruttura UnixODBC principale di connettersi a un DBMS MySQL, sono i cosiddetti
myodbc delle distribuzioni Linux basate su Debian. Per compilare manualmente quei driver, saranno necessari i file di intestazione di sviluppo dell'installazione di UnixODBC.
Informazioni sull'installazione di UnixODBC Gambas
Per abilitare il componente
ODBC di Gambas, le distribuzioni Linux offrono i rispettivi pacchetti, ad esempio nella distribuzione basata su Debian si chiamano
gambas3-gb-db-odbc; generalmente tutti i pacchetti dei moduli relativi a gambas vengono installati quando il pacchetto principale di gambas è installato nelle distribuzioni linux mayor.
D'altra parte, se l'installazione di Gambas è stata eseguita manualmente e tramite la modalità di compilazione e installazione, è necessario compilare Gambas dopo che il pacchetto
unixODBC è stato installato con le intestazioni di sviluppo incluse. Se hai già compilato Gambas prima dell'installazione del pacchetto
unixODBC , devi ricompilare di nuovo Gambas. Alla fine della compilazione, vedrai tutti i moduli Gambas che sono configurati e abilitati nell'ambiente Gambas, se tutto ha funzionato bene, il componente ODBC dovrebbe essere abilitato e installato.
Informazioni sulle configurazioni di UnixODBC
Il
Componente Gambas ODBC si basa sulla configurazione effettuata sui driver
unixODBC.
UnixODBC utilizza i cosiddetti file "ini". UnixODBC distingue tra due tipi di file ini.
File ini di sistema (progettati per essere accessibili ma non modificabili da alcun utente) e file
ini dell'utente (che sono privati per un particolare utente e possono essere modificati da quell'utente stesso).
File ini di sistema: Sono due, il file di sistema
odbcinst.ini contiene informazioni sui driver ODBC disponibili per tutti gli utenti e il file
odbc.ini che contiene informazioni sui DSN per la connessione ai database disponibili per tutti gli utenti. Questi "DSN di sistema" sono utili per applicazioni come i server web che potrebbero non essere in esecuzione come un utente reale e quindi non avranno una directory home per contenere un file odbc.ini.
File ini utente: ce n'è uno solo, il
.odbc.ini con un "punto" prima del nome, qui ci sono le informazioni ad uso esclusivo dell'utente e si trova nella home root dell'utente proprietario.
Il tipo di connessione è definito dal file di configurazione
odbcinst.ini, ogni driver definisce un nome del tipo di driver e quindi questa definizione viene utilizzata dalle definizioni di connessione del DSN. Il secondo utilizzo del file di configurazione
odbc.ini è opzionale, può essere utilizzato per definire le proprietà di connessione al database di DSN come il nome utente e la password.
I DSN sono stringhe di connessione, possono essere definite nel file
odbc.ini o da una
stringa di connessione, la stringa di connessione è tutte le proprietà separate da un punto e virgola mentre nel file odbc.ini le proprietà di connessione sono separate da nuove righe e ciascuna connessione divisi per sezione
vedi esempio.
Gambas e UnixODBC in generale
Prima di connettersi a un database, è necessario disporre del driver ODBC del tipo di connessione specifico per il DBMS specifico. Per il DSN la sorgente dati può essere dal sistema, dal file ini dell'utente o dalle stringhe di connessione senza DSN all'interno del codice, a seconda del database a cui ci si vuole connettere.
Il
Componente ODBC di Gambas analizza solo le chiamate all'API fornite dal gestore driver
unixODBC, quindi le frasi SQL DLL o DDL SQL dipenderanno dall'API del livello di implementazione del gestore driver
unixODBC. Quindi, fondamentalmente, se lo standard ODBC non implementa una funzionalità specifica, il componente Gambas si limiterà a restituire VERO (-1) o FALSO. Ad esempio, la definizione dell'API ODBC per un'istruzione SELECT non implementa un conteggio dei resi, quindi l'implementazione dell'API ODBC di Gambas restituisce -1 sempre (TRUE), il che significa che almeno una riga viene restituita dalla frase; in caso contrario, non verrà restituito alcun risultato.
Componente di installazione
L'installazione di Gambas nasconde così ODBC nella documentazione
Gambas Install
Componente
|
Libreria richiesta
|
gb.db.odbc
|
libodbc.so
|
Dettagli tecnici del Componente
L'utilizzo di ODBC tramite la definizione del file DSN richiede Connection.Type, Connection.Host in cui il nome della definizione DSN viene impostato dal file "odbc.ini" e le proprietà Connection.Login/Pass impostate correttamente. Per ulteriore documentazione, vedere la proprietà
Host dalla classe
Connection.
L'utilizzo di ODBC tramite ConnectionString richiede solo le proprietà
Connection.Type (in modo che gambas sappia che dovrebbe utilizzare il componente ODBC) e le proprietà
Connection.Host (per i dati di connessione) impostate correttamente.
Il componente, in primo luogo, analizzerà la proprietà
Host alla ricerca di punti e virgola (";"). Se ne trova almeno uno, assumerà che la proprietà contenga un ConnStr. Se non ci sono punti e virgola, si connetterà come sempre, con un DSN. In caso contrario, utilizzerà ConnStr in
Host per chiamare la funzione SQLDriverConnect () di ODBC. Ma quando il componente chiama quella funzione ODBC, non vengono utilizzate altre proprietà del componente (gambas) e quindi vengono ignorate. Si presume che tutti i dati necessari per la connessione siano presenti in ConnStr.
Vedere anche le pagine della documentazione specifica:
Come creare e utilizzare la connessione UnixODBC e la documentazione della classe di
connessione.
Configurazione della Connessione UnixODBC
Le estensioni dell'ODBC sono disponibili per quanto riguarda i loro moduli driver. L'elenco dei driver disponibili si trova in
http://www.unixodbc.org/drivers.html, ad esempio per connettersi a un DBMS Sybase è necessario installare e configurare un driver FreeTDS nel sistema di installazione UnixODBC.
Configurare un driver
I driver UnixODBC sono registrati nel file
odbcinst.ini, i loro file sono estensioni di libreria che sono anche definite nello stesso file. Di seguito è riportato un esempio di supporto del driver Sybase per una connessione sybase ODBC.
[ODBC]
Trace = Yes
TraceFile = /var/log/odbcsql.log
ForceTrace = Yes
[FreeTDS]
Description = FreeTDS Driver for Linux using guindosers DBs
Driver = /usr/lib/odbc/libtdsodbc.so
Setup = /usr/lib/odbc/libtdsS.so
UsageCount = 1
Dalle distribuzioni Linux generali installa e configura i driver dai pacchetti.
Configurare una connessione DSN
Dopo aver configurato il driver che si desidera utilizzare, è necessario definire un evento Nome origine dati per definizione o per
stringa di connessione ODBC completa.
Poiché Gambas
3.8.1 consente alla proprietà
Connection.Host di essere una stringa di connessione ODBC completa.
Nel file di definizione del nome dell'origine dati
odbc.ini è inoltre possibile specificare tutti i parametri necessari per connettersi al database. Tutti i parametri sono specifici del database del driver e possono variare da database a database.
Come puoi vedere, nell'esempio seguente, la configurazione dei due DSN è diversa perché i parametri necessari sono specifici del database. Il primo è per un database MySQL (che è in esecuzione localmente), il secondo è per un Sybase in esecuzione su un server remoto.
[odbcmysql1]
Driver = MySQL
Database = mysql
Server = localhost
Port = 2638
ReadOnly = No
[odbcsybase1]
Driver = FreeTDS
Database = sybasedemo
Server = 10.10.200.10
Port = 2638
ReadOnly = No
TDS_Version = 5.0
È necessario disporre di un driver di database configurato per ogni tipo di database e di un'origine dati per ogni database che si desidera utilizzare. Ad esempio, se hai due database MySQL, di cui il primo è in esecuzione sul sistema remoto A e il secondo sul sistema remoto B, avrai un solo driver database configurato (connettore MySQL odbc), ma due diverse origini dati, una source descriverà la connessione (e tutti i relativi parametri) al sistema A e una Data source descriverà la connessione (e tutti i parametri relativi) per il sistema B.
Esempi di configurazione unixODBC
Ci sono alcune configurazioni ODBC per Linux. Quelli che si presume che odbcinst.ini siano in /etc e odbc.ini sono anche in /etc, per l'utente come ".odbc.ini" nella directory home e un utente normale.
Esempio di odbcinst.ini che si trova nella directory /etc. Questo file contiene tutte le configurazioni dei driver e le opzioni di configurazione di Driver Manager
Esempio di definizione dell'intero file system /etc/odbcinst.ini
Questo mostra un file generale di esempio del file odbcinst.ini per i driver ODBC più utilizzati:
odbcinst.ini
[ODBC]
Trace = No
TraceFile = /tmp/sql.log
ForceTrace = No
Pooling = No
[MySQL]
Description =
Driver = /usr/lib/odbc/libmyodbc.so
Setup = /usr/lib/odbc/libodbcdrvcfg1S.so
UsageCount = 1
[FreeTDS]
Description = TDS driver Sybase SQL
Driver = /usr/lib/odbc/libtdsodbc.so
Setup = /usr/lib/odbc/libtdsS.so
CPTimeout =
CPReuse =
UsageCount = 1
[PostgreSQL]
Description = PostgreSQL ODBC driver (Unicode version)
Driver = /usr/lib/odbc/psqlodbcw.so
Setup = /usr/lib/odbc/libodbcpsqlS.so
Debug = 0
CommLog = 1
UsageCount = 1
Esempio di file /etc/odbc.ini a livello di sistema
Odbc.ini a livello di sistema situato nella directory /etc utilizzando la precedente definizione odbcinst.ini. Il file odbc.ini consente le password, ma ricorda che il file odbc.ini a livello di sistema è leggibile da qualsiasi utente registrato.
odbc.ini
[mysqlodbc-testdb]
Description = MySQL
Driver = MySQL
Host = localhost
Database = testdb
Port =
[mysqlodbc-kinderdb]
Description = MySQL
Driver = MySQL
Host = 10.10.200.10
Database = kinderdb
UserName = root
Password = mysql.secret
Port = 3369
ReadOnly = No
[ejabberd-postgres]
Description = PostgreSQL ejabberdb conection
Driver = PostgreSQL
Trace = No
Database = ejabberdnode
Server = 127.0.0.1 # if use Servername, must be equal of the node host ejabberd name
Port = 5432
ReadOnly = No
RowVersioning = No
ShowSystemTables = Yes
ShowOidColumn = No
[sainthacking]
Description = Conecion a saint to hack and crack
Driver = FreeTDS
Trace = Yes
TraceFile = /tmp/errc.log
Database = saintnonmina
Server = 192.168.1.100
Port = 1723
ReadOnly = No
TDS_Version = 8.0
Esempio di file odbc.ini a livello di utente
Lato utente ~/.odbc.ini si trova nella directory /home/
utilizzando la definizione odbcinst.ini a livello di sistema. Il file utente odbc.ini consente le password e deve essere "chown" per poter essere letto dall'utente proprietario.
Configurazione odbc dell'utente situata nella directory home dell'utente .odbc.ini
.odbc.ini
[saintuseraccess]
Description = Conecion a saint with auto user and password
Driver = FreeTDS
Trace = Yes
TraceFile = /tmp/errc.log
Database = saintnonmina
Server = 192.168.1.100
UserName = dba
Password = sql
Port = 1723
ReadOnly = Yes
TDS_Version = 8.0
[kinderdb-useronly]
Description = MySQL
Driver = MySQL
Host = 10.10.200.10
Database = kinderdb
UserName = root
Password = mysql.secret
Port = 3369
ReadOnly = No
[ejabberd-useronly]
Description = PostgreSQL ejabberdb conection
Driver = PostgreSQL
Trace = No
Database = ejabberdnode
Server = 127.0.0.1 # if use Servername, must be equal of the node host ejabberd name
UserName = root
Password = postgres.secret
Port = 5432
ReadOnly = No
RowVersioning = No
ShowSystemTables = Yes
ShowOidColumn = No
Verifica delle definizioni DSN ODBC
L'accesso può essere verificato se il pacchetto UnixODBC è stato installato completamente con l'utilità isql.
A seconda dell'ambito del file DSN odbc.ini se questo è a livello di sistema può essere testato e utilizzato da qualsiasi utente registrato; Il DSN a livello di utente può essere utilizzato e testato solo dall'utente proprietario.
Il formato del comando è semplice: isql <DSN name> <user> <password>
, e il nome utente e la password sono opzionali, ma in alcuni driver come FreeTDS sono obbligatori.
/bin/bash
% isql ejabberd-useronly username secretpassword.123
+---------------------------------------+
| Connected! |
| |
| sql-statement |
| help [tablename] |
| quit |
| |
+---------------------------------------+
SQL>select * from users
Vedi anche