Odbc

Eric -  
 sebsauvage -
Je recherche des renseignements sur le protocole de communication ODBC. En particulier
comment on peut s'en servir pour réaliser un pont à partir d'une base de données Versant
(objet) vers des applications qui lancent des requetes SQL sur cette base de données.
Si je suis pas clair demandez moi des précisions, les réponses m'intéressent vivement!
Merci à tous!!!

3 réponses

sebsauvage
 
Voici en gros comment ça marche:

application ---- ODBC ---- pilote ODBC ---- base de données

Les applications se moquent de savoir quelle base de données est utilisée, ou quel type de pilote est utilisé (SQL Server, Access, Oracle...).
Les applications ne s'adressent qu'à ODBC. C'est ODBC qui fait appel au bon pilote derrière.

Il faut donc que Versant soit fourni avec un pilote ODBC.
Si ce n'est pas le cas, il sera inutilisable avec ODBC.

Les clients ODBC sont généralement automatiquement installés avec le client base de données (ici: le client Versant).
Il faut aller dans le panneau de configuration: il y a une icône Data Sources (ODBC). Une fois ouvert, aller dans les DSN Système et cliquer sur le bouton "Ajouter": tu devrais voir la liste des pilotes clients ODBC disponibles.

Regarde dans la doc si un pilote ODBC est fourni ou non avec Versant.
0
Eric
 
Merci pour ta reponse, mais comment on s'en sert en admettant que je possède Versant avec tous les pilotes qui vont bien...
il y a de la doc la dessus qq part?
En fait ce que je veux faire c'est faire des requetes SQL sur ma base versant et recuperer le resultat de ces requetes pour les fournir a des applications
dans un fichier texte ou XML.
Comment est ce que je peux me servir d'ODBC pour faire ca?
0
sebsauvage
 
Et bien dans la plupart des langages, il y a une bibliothèque ODBC, tout dépend de ton langage de programmation.

Par exemple en Python, ça donne un truc du genre:

import dbi, odbc
conn = odbc.odbc('pyc/intr5b/password')
cur = conn.cursor()
cur.execute('SELECT * FROM CLIENTS')
rec = cur.fetchone()
while rec:
____print rec
____rec = cur.fetchone()
0