Gambas France BETA


Pas de compte ? Incription

exemplebdd

Utiliser les bases de données :





Exemple : Gestion de mots de passe



Notre petit programme très simple va vous permettre de saisir un login et un mot de passe et de vérifier si ce login associé au mot de passe est bien enregistré dans votre base de données. Comble du raffinement, si le login (utilisateur) n'existe pas dans la base, il vous le signalera également... ;-)

Créer un projet et dans composants, activer "accès aux bases de données". Dans Fmain, insérer deux textBox (TextBoxLogin et textBoxMdp) ainsi qu'un bouton (ButConnexion).



Ce petit exemple vous montre comment créer une base de données avec sa table et réaliser quelques enregistrements par le code. Il vous montre également comment faire une requête simple et tester le résultat. Rien de bien sorcier donc... :-D


Créer la base


Notre base de donnée va s'appeler "mabase" et elle sera de type sqlite3 car c'est un moteur de BDD léger dont le serveur est installé par défaut dans la plupart des distributions.

Vous remarquerez que nous renseignons au départ le strict minimum à savoir le type de base de données; ni son nom, ni son Host. La conséquence est que notre base de données va être créé en Mémoire vive !!! Rien sur le disque dur...
Donc, à l'extinction de l'ordinateur, la base de données disparaîtra, comme une variable. Cela présente parfois un intérêt en terme de vitesse, mais dans notre cas, cela vous évitera surtout de vous retrouver avec un fichier de plus sur votre disque.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
' Gambas class file

PRIVATE $hConn AS NEW Connection

PUBLIC SUB Form_Open()

DIM hTable AS Table
DIM rUsers AS Result

ME.Center

' ---------------------- Creation de la BDD -----------------------

WITH $hConn
.Type = "sqlite3"
'.Host = User.Home

END WITH

$hConn.Open 'on se connecte au serveur de base de données SQlite
IF NOT $hConn.Databases.Exist("mabase") THEN 'Si la base "mabase" n'existe pas
$hConn.Databases.Add("mabase") 'On la rajoute
ENDIF
$hConn.Close ' Puis on se deconnecte du serveur

$hConn.Name = "mabase" 'Et on renseigne le nom de la base a laquelle on veux se connecter
$hConn.Open 'On se reconnecte au serveur


Créer la table


Nous allons, dans notre exemple creer une seule table : la table Users dans lequel nous aurons 3 champs :
- id : qui sera un identifiant unique. Ce champ sera de type serial et donc, l'indentation se fait automatiquement. Ce champ, ne nous servira pas dans l'exemple mais c'est une bonne habitude a prendre. Nous nous en servirons également de clé primaire.

- login : ce sera notre identifiant. Un champ de type string d'une longueur de 10 caractères.

- mdp : Ce cera notre mot de passe. Un champ de type string d'une longueur de 10 caractères.

1
2
3
4
5
6
7
8
9
10
11
12
' ---------------- Creation de la table --------------------------
IF NOT $hConn.Tables.Exist("users") THEN
hTable = $hConn.Tables.Add("users")
' ajout de 3 champs: id, Login, mdp
hTable.Fields.Add("id", db.Serial)
hTable.Fields.Add("login", gb.String, 10)
hTable.Fields.Add("mdp", gb.String, 10)

hTable.PrimaryKey = ["id"]

hTable.Update
ENDIF


Créer les enregistrements


Nous allons créer deux enregistrements. Pour cela nous allons utiliser un objet de type result : rUsers que nous avons déclarée au début de notre fonction. La classe result se comporte comme un tableau en lecture/ecriture.

La première ligne indique que nous allons utiliser la connexion $hConn en mode création d'enregistrement dans la table users.

La seconde Ligne dit ce que nous allons créer comme enregistrement : Mettre "toto" dans le champ login.

La quatrième ligne met a jours la base de données. On ne s'occupe pas du Champ id, puisque cela est automatique...

Puis rebelotte pour le second enregistrement.



1
2
3
4
5
6
7
8
9
10
11
' ------------------ Creation des enregistrements (pour l'exemple) -------------

rUsers = $hConn.Create("users")
rUsers!login = "toto"
rUsers!mdp = "123456"
rUsers.Update
rUsers!login = "tata"
rUsers!mdp = "abcdef"
rUsers.Update

END


Fastoche non ?



Faire une requête et tester le résultat



Le test va se faire en cliquant sur le bouton Connexion (ButConnexion).

Toutes les explications sont dans le code :)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
PUBLIC SUB ButConnexion_Click()

DIM rMaRequete AS Result

rMaRequete = DB.Exec("SELECT * FROM users WHERE login = &1", TextBoxLogin.Text)
' Selectionne tous les champs dans la table users pour lesquel
' le champ login est egale a la quote &1 , la quote &1 est TextBoxLogin.Text
IF rMaRequete.Available = TRUE THEN ' si il existe un resultat a ma requete alors

IF TextBoxMdp.text = rMaRequete!mdp THEN ' Si le mdp saisie est egale a celui de la requete alors
Message.info("Bonjour " & rMaRequete!login) ' ecris le message: Bonjour + le login
ELSE
Message.Info("mauvais mot de passe " & rMaRequete!login) 'si mauvais mot de passe ecris.....
TextBoxMdp.Clear 'vide la textbox pour une ressaisie

ENDIF

ELSE ' actions si la requete ne correspond à aucun login enregistrés
Message.Info("Désolé, " TextBoxLogin.Text & " n'est pas enregistré \n Contactez l'administrateur !")

TextBoxLogin.Clear
TextBoxMdp.Clear
ENDIF

END




Amusez vous bien !

Page crée par Manu le 03/05/2011 00:01

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

Navigation :



<-- Liens du Wiki : <--
<-- Accueil du WIKI : <--

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

Documentation :



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