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 :
====================