Powerbuilder pour les completement Geeks !

Le forum (ô combien francophone) des utilisateurs de Powerbuilder.

Recherche rapide

Annonce

Certaines rubriques, dont des cours, sont uniquement visibles par les membres du forum ^^.
Dans la rubrique Liens & Références, vous avez accès à un sommaire de téléchargement, profitez-en !
Il existe maintenant un nouveau TOPIC "Votre CV en Ligne" accessible uniquement par demande.

#1 24-08-2006 11:33:53

pick ouic  
La bourse ou la vie ^^
Award: gearotter
Lieu: Massy-Verrières
Date d'inscription: 29-05-2006
Messages: 4658
Pépites: 942
Banque: 2,147,483,647
Site web

L’accès aux données via ODBC

Rappels sur ODBC.

ODBC (Open Data Base Connectivity) est un mécanisme de middleware. Il permet de « déconnecter » l’application frontale du moteur de base de données utilisé et de la rendre indépendante des contraintes associées au SGBD.

ODBC est composé de deux parties
ODBC en lui-même
le pilote de base de données.

Le résultat de l’utilisation de ODBC est la mise à disposition pour l’application frontale d’une source de données (DSN pour Data Source Name).
C’est ce DSN qui permet de lier l’application et le SGBDR de façon transparente, de telle manière que l’application ne soit pas tributaire des contraintes techniques du moteur.

Résultat:
Une application PowerBuilder aura accès à une, voire plusieurs sources de données, et c’est au travers cette DSN qu’elle aura la visibilité sur les composantes de la base telles que tables et procédures stockées.
L’application pourra alors travailler sur les données grâce :
aux data windows qui est le mode à privilégier
au langage SQL directement qui sera encapsulé dans du langage Power Script.


L’objet de connexion SQLCA.

La connexion à une base de doonées se fait au travers ODBC grâce à un objet particulier de PowerBuilder nommé objet Transaction (Transaction Object).

http://img167.imageshack.us/img167/5673/odbc0vk3.jpg

Cet objet précise à PowerBuilder les informations de connexion à une base et particulièrement le nom de la source de données (DSN). C’est à travers cet objet que sont établies et entretenues les conversations entre l’application frontale en tant que client et le SGBDR hébergeant les services de base de données en tant que serveur.
Par défaut PowerBuilder propose un objet Transaction nommé SQLCA (SQL Communications Area)  et c’est lui qui est implicitement utilisé.


Caractéristiques de SQLCA.
Caractéristiques générales.
Cet objet est non visuel et se comporte en fait comme un objet «  structure de données ».
Il est composé de 15 attributs et met à la disposition du développeur une fonction associée permettant de gérer la connexion.

Structure de SQLCA.
Sur les 15 propriétés, les 10 premières donnent les caractéristiques de connexion, les 5 suivantes renvoient les valeurs de contrôle générées par le moteur.
http://img88.imageshack.us/img88/328/odbc1or1.jpg


Fonction associée à SQLCA.

La fonction SetTransObject donne à l’application le contrôle sur toute la durée de la connexion, elle donne accès aux ordres SQL tels que:
http://img237.imageshack.us/img237/1536/odbc2az7.jpg
La fonction SetTransObject est à faire pour chaque data window, généralement elle est positionnée sur l’évènement particulier Constructor de la data window


La configuration de SQLCA.

Configurer SQLCA revient en fait à assigner des valeurs aux propriétés de l’objet Transaction et de spécifier ainsi les caractéristiques techniques de la connexion.
La syntaxe est identique à une assignation de valeur quelconque.

Format:
[Nom de l’objet Transaction].[Attribut] = <valeur>

Exemple pour une connexion via ODBC:

Code:

//Positionnement de l'objet connexion

sqlca.DBMS="ODBC"
Sqlca.Database="PowerBuilder Demo DB"
Sqlca.userid="dba"
Sqlca.DBPARM="ConnectString='DSN=PowerBuilder Demo DB;UID=dba;PWD=sql'"

La connexion à la source de données.

Se fait par l’ordre SQL Connect using ... , le fait de ne pas mentionner Using ... induit l’utilisation de SQLCA pour établir la connexion

Code:

// Lancement de la connexion
connect;
// Renient à un connect using  SQLCA;

Lorsque les connexions à la base de données ne sont plus utiles, il est nécessaire de déconnecter application et SGBDR pour libérer les ressources.
Si aucune déconnexion est faite, elle sera automatiquement faite à la fermeture de l ’application.

1°/ Fermeture de la connexion par Disconnect

Syntaxe:
DISCONNECT {USING TransactionObject} ;

2°/ Destruction de la transaction

Syntaxe:
DESTROY SQLCA


Utilisation de plusieurs sources de données.

Il est possible de gérer plusieurs objets transaction s’il est necessaire d’utiliser plusieurs bases de données au sein d’une même application.
Pour celà, il est nécessaire de disposer d’un objet transaction par connexion sur chaque base, et donc de créer un ou des objets transaction nouveaux.

Héritage de l’objet de transaction SQLCA.

La création d’un nouvel objet Transaction se fait par héritage de SQLCA, il faut travailler en plusieurs  temps.

1°/ Déclaration d’une transaction

Code:

// Declare the transaction object TO_Sybase.

Transaction TO_Sybase

2°/ Héritage de l’objet Transaction SQLCA

Code:

// Create the transaction object.
TO_Sybase=CREATE transaction

3°/ Positionnement des propriétés de l’objet Transaction hérité

Code:

// Define the attributes that will be used.
TO_Sybase.DBMS = "Sybase"

TO_Sybase.database = "Personnel"
TO_Sybase.LogId = "DD25"
TO_Sybase.LogPass = "Mac2"
TO_Sybase.ServerName = "TSIG "

4°/ Connexion

Code:

//Connect to the database in TO_Sybase.
CONNECT using TO_Sybase;

Paramétrage externe à l’application.
Il est possible de positionner les propriétés de l’objet Transaction par des valeurs récupérées d’un fichier texte au format des fichiers .ini de Windows.
La fonction ProfileString permet de retrouver la valeur d’une ligne particulière de ce fichier.

Syntaxe
ProfileString ( nom_fichier, section, clé, défaut )

Exemple

Code:

//   Objet transaction.
TO_Gestion=CREATE transaction 
TO_Gestion.DBMS = "ODBC"
TO_Gestion.database = "GESTION"
TO_Gestion.UserId = Profilestring("c:\cdolz\acces.ini","database","UserId","")
TO_Gestion.DBPass = Profilestring("c:\cdolz\acces.ini","database","DBPass","")
TO_Gestion.DBParm = "Connectstring='DSN=" + TO_Gestion.database + &
";UId=" + TO_Gestion.UserId + ";PWD=" + TO_Gestion.DBPass +"'"
// Connexion à la base
connect using TO_Gestion ;

Contenu du fichier d’initialisation :

Code:

[Database]
dbms=ODBC
database=PowerBuilder Demo DB

Remarque:
La valeur associée à la clé database correspond à un nom de DSN connu de ODBC et associé à un pilote de base de données (driver).


Connaitre son ignorance est une grande part de la connaissance.
http://animegifs.free.fr/anime/mazinger/mazinger.gif

Hors ligne

 

#2 24-08-2006 11:52:35

luluh  
Membre Geek
Lieu: Seine et Marne
Date d'inscription: 21-08-2006
Messages: 29
Pépites: 126
Banque: 0
Site web

Re: L’accès aux données via ODBC

Excellent tuto, je comprends mieux la chose
Grand merci à pick ouic

Hors ligne

 

#3 24-08-2006 14:56:01

pick ouic  
La bourse ou la vie ^^
Award: gearotter
Lieu: Massy-Verrières
Date d'inscription: 29-05-2006
Messages: 4658
Pépites: 942
Banque: 2,147,483,647
Site web

Re: L’accès aux données via ODBC

si tu m'offres un hamburger, alors...ca passera encore mieux


mais, le but est d'informer tout le monde !
c'est tout de meme le but de ce forum non ?


Connaitre son ignorance est une grande part de la connaissance.
http://animegifs.free.fr/anime/mazinger/mazinger.gif

Hors ligne

 

Pied de page des forums

Propulsé par FluxBB 1.2.22