Documentation de Gambas - /howto/database

/howto/database

# Comment ouvrir une connection MySQL et l'utiliser

## Exemple 1. Créer une nouvelle connexion (MySQL).

### Notes :

- Vous devriez avoir déjà installé le Component et tout les paquets en relatifs

- Ce n'est pas un exemple sur les instructions SQL (MySQL ou autre)

- Les privilèges dans une base de données sont accordés par l'administrateur MySQL, et ne sont pas contrôlés par Gambas.

- Le composant gb.db doit être sélectionné pour que votre programme puisse accéder au moteur de la base de données.

### Recommandations :

- La connexion de base de données devrait être placée dans un Module, ainsi elle pourra être appelée depuis n'importe où.

- Le gestionnaire de base de données de Gambas est super!, mais si vous voulez créer une bonne base de données en MySQL vous devriez utiliser la console MySQL ou l'outil MySQL Workbench, ça aidera à éviter d'éventuels problèmes liés aux types de données.

### Les étapes :

1.Créez un nouveau Module pour votre programme. Cet exemple utilise MODMain comme nom de Module.

2.Créez une nouvelle variable pour la connexion:

PUBLIC $Con AS NEW Connection

3.Maintenant créez une procédure pour construire la connexion:

PUBLIC PROCEDURE Connect() $Con.Close() ' Ferme la connexion $Con.Type = "[..../def/mysql]" ' Type de connexion $Con.Host = "localhost" ' Nom du serveur $Con.Login = "root" ' Nom d'utilisateur pour la connexion $Con.Port = "3306" ' Port à utiliser pour la connexion, habituellement 3306 $Con.Name = "Sophia" ' Nom de la base de données que nous voulons utiliser $Con.Password = "root123" ' Mot de passe utilisateur $Con.Open() ' Ouvre la connexion END

4.Maintenant créez une procédure pour démarrer le programme:

PUBLIC SUB Main() Connect() ' lance la procédure pour se connecter FRMStart.Visible = TRUE ' Le formulaire principal de votre programme END

5.Si vous voulez exécuter une requête qui retourne tout le contenu de la base de données, il suffit d'écrire:

MODMain.$Con.Exec(“SELECT * FROM mysql.user”)

6.Vous pouvez créer des requêtes avec des informations fournies par l'utilisateur; faites seulement quelque chose comme ceci:

PUBLIC PROCEDURE SearchName() DIM $Query AS String $Query = “SELECT * FROM Amis WHERE Name = '” & TBXName.Text & “'” MODMain.$Con.Exec($Query) END

## Exemple 2. Traiter les résultats (SELECTS).

### Notes :

1.Vous devriez avoir lu les remarques et les recommandations de l'exemple 1.
2.Gambas a un type de donnée spécial pour gérer les résultats de requêtes, il est appelé Result.

### Les étapes :

1.Supposons que la Table Amis ait les champs suivants:

           Nom
           Prénom
           Adresse
           Téléphone

2.On stocke le résultat de la requête dans une variable:

PUBLIC PROCEDURE RechercheNom() DIM $Query AS String DIM $Result AS Result DIM $Tel AS String

$Query = “SELECT * FROM Amis WHERE Nom = '” & TBXName.Text & “'” $Result = MODMain.$Con.Exec($Query) $Tel = $Result!Téléphone Message.Info($Tel) END

3.Si vous voulez créer un rapport imprimable, vous pouvez mettre le résultat de la requête dans un fichier (File) utilisant le format html, de manière à pouvoir l'ouvrir en utilisant un navigateur web.

## Exemple 3. Les transactions.

### Notes :

1.Vous devriez avoir lu les notes et recommandations des exemples 1 et 2.

### Les étapes:

1.Supposons que nous voulions ajouter un nouvel enregistrement dans la Table Amis:

DIM $Result AS Result

MODMain.$Con.Begin() $Result = MODMain.$Con.Create(“Amis”) $Result!FirstName = TBXName.Text $Result!SecondName = TBXName2.Text $Result!Address = TBXAddress.Text $Result!Phone = TBXPhone.Text $Result.Update]() MODMain.$Con.Commit()

2.Soyez prudent avec les types de données, bien sur, vous ne pouvez pas sauvegarder une String dans un Integer.