Friday, November 9, 2018

Code Windev réalisant une connexion à une base de données SQL Server


Code du projet qui appele la classe de connexion à la base de données
// Connexion à la base de données
cCnxBase.gsFichierIni = "Appli.ini" // Nom du fichier .INI avec paramétres de connexion à la base de données
SI cCnxBase.ConnexionBD() = -1 ALORS
   Bip
   FinProgramme ("Erreur lors de la lecture des paramètres de connexion à la base de données" + RC + "Arrêt du programme")
FIN



Exemple du fichier .INI :
[ParamCnx]
Serveur=MonServeur 
Utilisateur=User_Test
MotDePasse=di5FmvXzGw // Valeur cryptée
Base=MaBase




Code exécutant une requête SQL via la connexion définie par la classe cCnxBase

PROCÉDURE Test()
s est une Source de Données

HExécuteRequêteSQL(s,cCnxBase.gConnexionBD, hRequêteSansCorrection ,"exec [Ma_Pro_Stock]") // Exécution d'une procédure stockée
FichierVersTableau(MonTableau_Graphe, s)
HLibèreRequête(s)




=======================================================================


Code de la classe cCnxBase


// Déclaration de cCnxBase
cCnxBase est une Classe
GLOBAL
  gConnexionBD  est une Connexion
  gsFichierIni  est une chaîne 
  gsCheminIni  est une chaîne
  gsNomServeur  est une chaîne
  gsUtilisateur   est une chaîne
  gsMotDePasse est une chaîne
  gsBase  est une chaîne
FIN



// ------------------------------------------------------------------

// Méthode ConnexionBD()

// Connexion à la base de données
PROCÉDURE PUBLIQUE GLOBALE ConnexionBD()

gsCheminIni=ComplèteRep(fRepExe()) + gsFichierIni
SI PAS fFichierExiste(gsCheminIni) ALORS
 Bip
 Erreur ("Le fichier de paramètres " + gsFichierIni + " n'est pas présent dans le répertoire de l'application '"+fRepExe()+"'"+RC+"Arrêt du programme")
 RENVOYER -1
FIN

//Récupération du nom du serveur sql dans le fichier ini
gsNomServeur=INILit("ParamCnx","Serveur","",gsCheminIni)
SI gsNomServeur="" ALORS
 Bip
 FinProgramme ("Le paramètre 'Serveur' n'est pas présent dans fichier de paramètres " + gsFichierIni + RC + "Arrêt du programme")
 RENVOYER -1
FIN

//Récupération de Utilisateur dans le fichier ini
gsUtilisateur=INILit("ParamCnx","Utilisateur","",gsCheminIni)
SI gsUtilisateur="" ALORS
 Bip
 FinProgramme ("Le paramètre 'Utilisateur' n'est pas présent dans fichier de paramètres " + gsFichierIni + RC + "Arrêt du programme")
 RENVOYER -1
FIN

//Récupération de Mot De Passe dans le fichier ini
gsMotDePasse=INILit("ParamCnx","MotDePasse","",gsCheminIni)
SI gsMotDePasse="" ALORS
 Bip
 FinProgramme ("Le paramètre 'Mot De Passe' n'est pas présent dans fichier de paramètres " + gsFichierIni + RC + "Arrêt du programme")
 RENVOYER -1
FIN

//Récupération de Base dans le fichier ini
gsBase=INILit("ParamCnx","Base","",gsCheminIni)
SI gsBase="" ALORS
 Bip
 FinProgramme ("Le paramètre 'Base' n'est pas présent dans fichier de paramètres " + gsFichierIni + RC + "Arrêt du programme")
 RENVOYER -1
FIN

gConnexionBD..Source   =  gsNomServeur
gConnexionBD..Utilisateur = gsUtilisateur
gConnexionBD..MotDePasse = Décrypte(gsMotDePasse, "MaClé") 
gConnexionBD..BaseDeDonnées = gsBase
gConnexionBD..Provider  = hAccèsNatifSQLServer
gConnexionBD..Accès  = hOLectureEcriture

SI HOuvreConnexion(gConnexionBD) = Faux ALORS
 RENVOYER -1
SINON
 HChangeConnexion("*",gConnexionBD)
 RENVOYER 1
FIN


// Autre possibilité de connexion à la base (par programmation):
// HDécritConnexion()
// HChangeConnexion()