Structure, collections ou classe pour stocker les propriétés des tables de ma BD [Résolu]

Signaler
Messages postés
140
Date d'inscription
samedi 5 mars 2011
Statut
Membre
Dernière intervention
13 août 2013
-
Messages postés
140
Date d'inscription
samedi 5 mars 2011
Statut
Membre
Dernière intervention
13 août 2013
-
Bonjour à tous,

Aujourd'hui dans mon code j'utilise des structures pour accéder facilement aux nom de tables et de colonnes d'une BDD. Par exemple : Tables.Table1 ou Colonnes.Colonne1 pour obtenir les valeurs string ("Table1" et "Colonne1"), c'est pratique puisque je peux accéder aux nom de tables et de colonnes directement dans l'intellisense de l'IDE et evite beaucoup de risque d'erreur.
Voici la structure (c'est la même chose pour les colonnes) :

  Public Structure Tables
        Const Table1 As String = "Table1"
        Const Table2 As String = "Table2"
        Const Table3 As String = "Table3"
     End Structure

Problème, je ne peux pas utiliser ce principe pour stocker les type de champs et leurs tailles c'est pourquoi je souhaite créer des classes mais je n'ai aucun début de solution actuellement, si vous avez une piste de réflexion ça m'aiderais beaucoup. J'ai commençais avec une classe mais je résultat n'est pas convaincant dans la mesure ou je ne sais acceder à un élément qu'a partir de son index et nom à partir de son nom. Et en bonus si l'intellisense pouvais me proposer la liste des tables et colonnes ça serait vraiment un plus.

Pour l'instant voici les classes que j'ai commençais à écrire mais qui ne me satisfont pas :

Public Class Colonne
    Private _dbName As String
    Private _dbType As ADOX.DataTypeEnum
    Private _dbSize As Integer

    Public Sub New()

    End Sub

    'Public Sub New(ByVal DBname As String, ByVal DBType As ADOX.DataTypeEnum, ByVal DBSize As Integer)
    'Me._dbName = DBname
    'Me._dbType = DBType
    'Me._dbSize = DBSize
    'End Sub

    Public Property DBname() As String
        Get
            Return _dbName
        End Get
        Set(ByVal value As String)
            _dbName = value
        End Set
    End Property

    Public Property DBType() As ADOX.DataTypeEnum
        Get
            Return _dbType
        End Get
        Set(ByVal value As ADOX.DataTypeEnum)
            _dbType = value
        End Set
    End Property

    Public Property DBSize() As Integer
        Get
            Return _dbSize
        End Get
        Set(ByVal value As Integer)
            _dbSize = value
        End Set
    End Property

End Class


Public Class ListColonnes
    Inherits List(Of Colonne)
    'Inherits SortedList(Of String, Colonne)
End Class

24 réponses

Messages postés
140
Date d'inscription
samedi 5 mars 2011
Statut
Membre
Dernière intervention
13 août 2013

C'est bon, j'ai trouvé.
Messages postés
14799
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
13 juin 2021
155
Bonjour,

Afin de permettre à d'autres de trouver leur réponse, quelle solution as-tu utilisée ?

---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS, celui-ci pour bien poser votre question ou encore celui-ci pour les PFE et autres exercices[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : )
[*]En VB.NET pensez à activer Option Explicit et Option Strict (propriété du projet) et à retirer l'import automatique de l'espace de nom Microsoft.VisualVasic (onglet Références dans les propriétés du projet).
[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés./list
---
Mon site
Messages postés
14799
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
13 juin 2021
155
Bonjour,

Conseil,
Quand tu fais :
Public Colonnes As New SortedList(Of String, DBColonne)

Colonnes est publique, c'est déconseillé.
Tu peux utiliser une propriété paramétrée :

Public Readonly Property UneColonne(Byval pColonneName as String)
    Get
        Return Colonnes(pColonneName)
    End Get
End Property


---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS, celui-ci pour bien poser votre question ou encore celui-ci pour les PFE et autres exercices[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : )
[*]En VB.NET pensez à activer Option Explicit et Option Strict (propriété du projet) et à retirer l'import automatique de l'espace de nom Microsoft.VisualVasic (onglet Références dans les propriétés du projet).
[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés./list
---
Mon site
Messages postés
140
Date d'inscription
samedi 5 mars 2011
Statut
Membre
Dernière intervention
13 août 2013

Merci pour le conseil NHenry