Application vb.net multi couche
Bonjour je viens de me mettre à la programmation multi-couche en vb.net et ado.net je pense avoir compris les liens entre chaque couche mais c'est la construction des classes qui me posent problème.
J'ai 4 couche : IHM (interface homme - machine), DAL (accès aux données), BEL (objet métier) et BPL (règle de gestion, appel des fonctions du DAL)
J'ai une table Access nommé User, j'ai donc crée mon interface pour en ajouter un enregistrement (IHM).
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
|
'ajout référence vers BEL
Imports BEL
'ajout référence vers BEL
Imports BPL
Public Class Inscription
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
AjouterUser(TBlogin.Text, TBpassword.Text, CBquestion.SelectedText, TBlogin.Text)
End Sub
End Class |
DAL, une classe pour la connexion :
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 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
|
' Ajout référence : Microsoft ADO Ext. 2.8 for DDL and Security
Public Class AccessConnexion
'attribut chemin de la base
Private chemin As String
'Attribut connexion unique à une source de données
Private cnx As OleDb.OleDbConnection
'Attribut chaine de connection (fournisseur d'accès aux données + chemin)
Private cnxstr As String
'retourne vrai si le fichier (base) existe
Public Function verif_chemin() As Boolean
Return System.IO.File.Exists(chemin)
End Function
Public Sub Initialise_connexion()
chemin = My.Application.Info.DirectoryPath & "\Data_base.accdb"
cnxstr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & chemin & ";"
End Sub
Public Sub Create_base()
'base de donnée
Dim db As New ADOX.Catalog
Try
db.Create(cnxstr)
Catch ex As Exception
Throw New Exception("Erreur de création de la base" & Environment.NewLine & ex.Message)
End Try
End Sub
Protected Sub Open_connexion()
Try
'test si la connexion n'est pas déjà ouverte
If cnx.State <> 1 Then
cnx = New OleDb.OleDbConnection
cnx.ConnectionString = cnxstr
cnx.Open()
End If
Catch ex As Exception
Throw New Exception("Erreur d'ouverture connexion" & Environment.NewLine & ex.Message)
End Try
End Sub
Protected Sub Close_connexion()
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
End Sub
End Class |
une autre pour la table User (c'est la que je bloque un peu beaucoup) je ne vois pas trop comment je dois organisé cela
Code:
1 2 3 4
|
Public Class AccessUsers
'vide
End Class |
BEL, instanciation des objet
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 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 USERS
#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 |
et la couche BPL
Code:
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 |