Bonjour, voila un peu près un an que je me suis mis à développé en VB.net c'était du développement en vrac alors je me suis dis que j'allais me mettre à la programmation multi-couche.
J'ai donc réalisé un début de programme avec juste un formulaire d'inscription qui insere dans une base de donnée Access en ADO.net.
Voila je voudrai savoir se que vous en pensiez ? savoir si c'est une bonne base ?
IHM
avec un module (mes fonctions perso)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58 'ajout référence vers BEL Imports BEL 'ajout référence vers BEL Imports BPL 'ajout référence vers DAL Imports DAL Public Class Inscription Private au As New AccessUsers Private Sub AjouterUser(ByVal login As String, ByVal password As String, ByVal question As String, ByVal reponse As String) Dim NewUser As USER = New USER(login, password, question, reponse) Dim UserBPL As New BPL.BPLuser UserBPL.BPL_Ajouter(NewUser) End Sub Private Sub Binscription_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Binscription.Click Dim nbvide As Integer 'RAZ des erreurs EP.Clear() 'permet de parcourir tous les champs For Each ctrl In GBinscription.Controls 'si TextBox If TypeOf ctrl Is TextBox Then If TBtaille(ctrl, 10) Then EP.SetError(ctrl, "Champ " & ctrl.name & " doit contenir 10 caractères") nbvide = +1 End If 'si ComboBox ElseIf TypeOf ctrl Is ComboBox Then If CBvide(ctrl) Then EP.SetError(ctrl, "Aucune donnée sélectionnée ") nbvide = +1 End If End If Next 'aucun champ n'est vide If nbvide = 0 Then Try au.table_utilisateur() AjouterUser(TBlogin.Text, TBpassword.Text, CBquestion.Text, TBreponse.Text) Catch ex As Exception MessageBox.Show(ex.Message, ".:: ERREUR", MessageBoxButtons.OK, MessageBoxIcon.Error) End Try End If End Sub Private Sub Inscription_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing Fermeture_Form(Me, e) End Sub End Class
DAL : une class Connexion
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64 Module fonctions 'permet de basculer d'un form (fermeture) à un autre (ouverture) ' sans se soucier de la fermeture Public Sub Changement_Form(ByVal fr_ferme As Form, ByVal fr_ouvre As Form) fr_ferme.Visible = False fr_ouvre.Show() fr_ferme.Close() End Sub 'fermeture d'un form 'param : form, evenement de fermeture Public Sub Fermeture_Form(ByVal fr_ferme As Form, ByVal e As System.Windows.Forms.FormClosingEventArgs) If fr_ferme.Visible = True Then If MessageBox.Show("Fermer " & fr_ferme.Name & " en cours ?", ".:: Fermeture", MessageBoxButtons.YesNo, MessageBoxIcon.Question) = DialogResult.No Then 'annulation de l'événement de fermeture e.Cancel = True End If End If End Sub 'Test la taille de la valeur du TextBox 'param : TextBox & taille de l'on veut Public Function TBtaille(ByVal TB As TextBox, ByVal taille As Integer) As Boolean Return TB.TextLength < taille End Function 'vérifie si TextBox vide Private Function TBvide(ByVal tb As TextBox) As Boolean 'return true si vide Return tb.Text = "" End Function 'Test si ComboBox vide Public Function CBvide(ByVal CB As ComboBox) As Boolean Return CB.Text = "" End Function 'Test composant vide GB Public Function Parcours_GB(ByVal GB As GroupBox, ByRef ep As ErrorProvider) As Integer ' competeur nb de Controls vide Dim nbctrlvide As Integer = 0 'Pour chaque CTRL dans le GroupBox For Each ctrl In GB.Controls 'Si le type est TextBox If TypeOf ctrl Is TextBox Then 'Si fonction TBvide = true If TBvide(ctrl) Then nbctrlvide += 1 ep.SetError(ctrl, "Champ " & ctrl.name & " vide !") End If 'Si le type est ComboBox ElseIf TypeOf ctrl Is ComboBox Then 'Si fonction TBvide = true If CBvide(ctrl) Then nbctrlvide += 1 ep.SetError(ctrl, "Sélection " & ctrl.name & " vide !") End If End If Next Return nbctrlvide End Function End Module
DAL : une classe utilisateur
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64 ' Ajout référence : Microsoft ADO Ext. 2.8 for DDL and Security Imports ADOX Public Class AccessConnexion 'attribut chemin de la base Private chemin As String = My.Application.Info.DirectoryPath & "\DataBase.accdb" 'Attribut connexion unique à une source de données Private cnx As OleDb.OleDbConnection = Nothing 'Attribut chaine de connection (fournisseur d'accès aux données + chemin) Private cnxstr As String = "Provider=Microsoft.ACE.OLEDB.12.0; Data Source=" & chemin & ";" 'retourne vrai si le fichier (base) existe Public Function verif_chemin() As Boolean Return System.IO.File.Exists(chemin) End Function 'créer la BD access Public Sub Create_base() Try Dim Cat As New Catalog Cat.Create(cnxstr) Catch ex As Exception Throw New Exception("Erreur création base" & Environment.NewLine & ex.Message) End Try End Sub Public Sub Create_table(ByVal sql As String) Dim Cmd = New OleDb.OleDbCommand Open_connexion() Cmd.Connection = cnx Cmd.CommandText = sql Cmd.ExecuteNonQuery() Close_connexion() End Sub Protected Function Open_connexion() As OleDb.OleDbConnection Try cnx = New OleDb.OleDbConnection 'test si la connexion n'est pas déjà ouverte If cnx.State <> 1 Then cnx.ConnectionString = cnxstr cnx.Open() End If Catch ex As Exception Throw New Exception("Erreur d'ouverture connexion" & Environment.NewLine & ex.Message) End Try Return cnx End Function Protected Function Close_connexion() As OleDb.OleDbConnection Try 'test si la connexion n'est pas déjà fermer If cnx.State <> 0 Then cnx.Close() End If Catch ex As Exception Throw New Exception("Erreur fermeture connexion" & Environment.NewLine & ex.Message) End Try Return cnx End Function End Class
BPL
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
28
29
30
31
32
33 'ajout référence vers BEL Imports BEL Public Class AccessUsers : Inherits AccessConnexion Public Sub table_utilisateur() Create_table("CREATE TABLE UTILISATEUR (identifiant VARCHAR(10) NOT NULL PRIMARY KEY," & "mdp CHAR(10) NOT NULL," & "question VARCHAR(35) NOT NULL," & "reponse CHAR(10) NOT NULL)") End Sub 'Enregistrement de l'utilisateur dans la base Public Sub Ajouter(ByVal NewUser As USER) Try Dim cnx As New OleDb.OleDbConnection Dim cmd As OleDb.OleDbCommand cnx = Open_connexion() cmd = New OleDb.OleDbCommand cmd.CommandType = CommandType.Text Dim sql As String = "INSERT INTO UTILISATEUR (identifiant, mdp, question, reponse) VALUES (@login, @password, @question, @reponse)" cmd.CommandText = sql cmd.Parameters.AddWithValue("@login", NewUser.Login) cmd.Parameters.AddWithValue("@password", NewUser.Password) cmd.Parameters.AddWithValue("@question", NewUser.Question) cmd.Parameters.AddWithValue("@reponse", NewUser.Reponse) cmd.Connection = cnx cmd.ExecuteNonQuery() Catch ex As Exception Throw New Exception("Erreur ajout utilisateur" & Environment.NewLine & ex.Message) End Try End Sub End Class
BEL
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 'ajout référence vers la BEL Imports BEL 'ajout référence vers la DAL Imports DAL Public Class BPLuser 'Envoie de l'objet metier à la DAL pour l'ajout de l'utilisateur Public Sub BPL_Ajouter(ByVal NewUser As USER) Dim UserDAL As New DAL.AccessUsers UserDAL.Ajouter(NewUser) End Sub End Class
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59 Public Class USER #Region "Attributs" Private User_login As String Private User_password As String Private User_question As String Private User_reponse As String #End Region #Region "Property" Public Property Login() As String Get Return User_login End Get Set(ByVal value As String) User_login = value End Set End Property Public Property Password() As String Get Return User_password End Get Set(ByVal value As String) User_password = value End Set End Property Public Property Question() As String Get Return User_question End Get Set(ByVal value As String) User_question = value End Set End Property Public Property Reponse() As String Get Return User_reponse End Get Set(ByVal value As String) User_reponse = value End Set End Property #End Region Public Sub New(ByVal Login As String, ByVal Password As String, ByVal Question As String, ByVal Reponse As String) User_login = Login User_password = Password User_question = Question User_reponse = Reponse End Sub End Class
Partager