ODBC

Da Gambas-it.org - Wikipedia.

ODBC (Open DataBase Connectivity)

Questo wiki è realizzato grazie alle spiegazioni fornite dal membro milio del forum gambas-it.org

ODBC, più precisamente unixODBC è un driver che permette di interfacciarsi con qualsiasi database DBMS a prescindere dalla piattaforma su cui il database risiede.

Per poterci collegare al database occorre per prima cosa scaricare il driver corretto dal sito del database, successivamente dovremo sistemare correttamente i file ini di configurazione odbcinst.ini e odbc.ini.

Qui una spiegazione sulla wiki di Gambas

Faremo un esempio pratico di collegamento tramite driver unixODBC a un database FireBird:

1 - Per prima cosa scarichiamo i driver da qui: https://firebirdsql.org/en/odbc-driver/

2 - Estraiamo i driver in una cartella, ad esempio in Ubuntu li salveremo in /usr/lib/x86_64-linux-gnu/odbc/

3 - Ora dobbiamo configurare il file /etc/odbcinst.ini così:

 [FireBird]
 Description=Firebird driver ODBC
 Driver=/usr/lib/x86_64-linux-gnu/odbc/libOdbcFb.so
 Setup=/usr/lib/x86_64-linux-gnu/odbc/libOdbcFb.so
 UsageCount=1
 CPTimeout=0
 CPTimeToLive=0
 DisableGetFunctions=0
 DontDLCLose=1
 ExFetchMapping=1
 Threading=3
 FakeUnicode=0
 

NOTA: Il nome del tipo di database a cui si collega il driver va posto fra le parentesi quadre in questo caso [FireBird]


4 - Ora configuriamo il file /etc/odbc.ini così, cambiando con i dati corretti di Dbname, User e Password:

 [Skema]
 Description=FireBird
 Driver=FireBird
 Dbname=<host server>:<percorso database>
 Client=
 User=pippo
 Password=<passfrase>
 Role=
 CharacterSet=WIN1252
 ReadOnly=Yes
 NoWait=No
 Dialect=3
 QuotedIdentifier=Yes
 SensitiveIdentifier=No
 AutoQuotedIdentifier=No
 UseSchemaIdentifier=0 - Set null field SCHEMA
 LockTimeoutWaitTransactions=0
 SafeThread=Yes
 

NOTA: Il nome della connessione che usa il driver per quel tipo di collegamento va posto fra parentesi quadre, in questo caso [Skema]


Per vedere se il tutto funziona a dovere da terminale diamo il seguente comando, naturalmente cambiando anche qui con i dati corretti:

 isql Skema pippo passfrase
 

Su Gambas la connessione andrà settata in questo modo:

 DIM oConn As New Connetion
 WITH oConn
   .Type = "odbc"
   .Host = "Skema"
   .User = "pippo"
   .Password = "passfrase"
   .Open()
 END WITH


NOTA: Possiamo usare lo stesso driver su diversi database, per ogni database occorre aggiungere al file /etc/odbc.ini i nuovi dati lasciando uno spazio vuoto, ad esempio:


 [Mistral]
 Description=Gestionale aziendale
 Driver=FireBird
 Dbname=<host server>:<percorso dell'altro database>
 Client=
 User=pippo
 Password=passfrase
 Role=
 CharacterSet=WIN1252
 ReadOnly=No
 NoWait=No
 Dialect=1
 QuotedIdentifier=Yes
 SensitiveIdentifier=No
 AutoQuotedIdentifier=No
 UseSchemaIdentifier=0 - Set null field SCHEMA
 LockTimeoutWaitTransactions=0
 SafeThread=Yes

Quindi su Gambas si setta la nuova connessione in questo modo:

 DIM oConn As New Connetion
 WITH oConn
   .Type = "odbc"
   .Host = "Mistral"
   .User = "pippo"
   .Password = "passfrase"
   .Open()
 END WITH

Altri collegamenti:

unix ODBC

connection