IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Forms Discussion :

[C#]Lecture d'une base de donnée


Sujet :

Windows Forms

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 47
    Points : 40
    Points
    40
    Par défaut [C#]Lecture d'une base de donnée
    Bonjour,

    Celà fait bien une semaine que je bloque dans mon projet.
    En fait, mon programme toi pouvoir lire une DB fournies par l'utilisateur. Je ne connais donc pas sa structure à l'avance.

    J'arrive pour le moment à obtenir le nom des tables, des colonnes et des clés primaires via l'instruction odbcConnection.getSchema() (grâce au framework 2.0).

    Mais bon, sans les clés étrangères, je n'irai pas loin

    Est-ce que quelqu'un saurait m'aider?

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 47
    Points : 40
    Points
    40
    Par défaut
    Personne ??
    Je sens bien que je vais tourner en rond longtemps moi

  3. #3
    Membre actif Avatar de padodanle51
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2006
    Messages
    389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2006
    Messages : 389
    Points : 230
    Points
    230
    Par défaut
    tu créer un datagridview et tu met la table en connexion peut importe les colonne il te mettra tout parfaitement

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 47
    Points : 40
    Points
    40
    Par défaut
    Euh, mais à ce moment-là, j'affiche les tables, mais pas les relations...
    Donc ça ne change rien à ce que je sais faire pour le moment

  5. #5
    Membre actif Avatar de padodanle51
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2006
    Messages
    389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2006
    Messages : 389
    Points : 230
    Points
    230
    Par défaut
    dsl alors j'ai pas compris le problème
    en tout cas si c'est pour une histoire de relation dans ton explorateur de serveur, quand t connecté à la base de donnée tu ne peu pas la voir??

  6. #6
    Membre habitué Avatar de Sodangbe
    Développeur informatique
    Inscrit en
    Janvier 2006
    Messages
    171
    Détails du profil
    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 171
    Points : 145
    Points
    145
    Par défaut
    Salut ,
    ce que tu cherche a faire je l'ai déja fait lannée derniere avec VB 6.0 voici le code essai de voir si ca peut t'inspirer
    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
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    Private Sub Command1_Click()
     
    Dim MaConn As ADODB.Connection, rstTable As ADODB.Recordset
    Dim rstEnfant As ADODB.Recordset, rstCompl As ADODB.Recordset
    Dim cmpt1 As Long, cmpt2 As Long, NomTable As String, Indexed As Boolean
    Dim cleNoeudTable As String, cleNoeudChamps As String, cleNoeudCles As String
    Dim cleNoeudChampCourant As String, cleNoeudCleCourante As String
     
    'création de la connexion
    Set MaConn = New ADODB.Connection
    MaConn.Provider = "Microsoft.Jet.OLEDB.4.0;"
    MaConn.Open Text1.text
     
    'création du recordset contenant la structure des tables
    Set rstTable = New ADODB.Recordset
    Set rstTable = MaConn.OpenSchema(adSchemaTables)
     
    'Ajout de la racine du treeview
    TreeView1.Nodes.Add , , "r", "Structure"
    TreeView1.Nodes(1).Expanded = True
     
    'Parcours de la collection des tables
    cmpt1 = 1
    Do While Not rstTable.EOF
     
        NomTable = rstTable!Table_Name
     
        'élimine les tables systèmes et les Vues
        If InStr(1, NomTable, "MSYS", vbTextCompare) <> 1 And rstTable!Table_Type <> "VIEW" Then
     
            'Ajout de la table au treeview
            cleNoeudTable = "t" & cmpt1
            TreeView1.Nodes.Add "r", tvwChild, cleNoeudTable, NomTable
     
            'création du recordset des champs de la table
            Set rstEnfant = New ADODB.Recordset
            Set rstEnfant = MaConn.OpenSchema(adSchemaColumns, Array(Empty, Empty, NomTable, Empty))
            cmpt2 = 1
            cleNoeudChamps = cleNoeudTable & "ch"
            cleNoeudCles = cleNoeudTable & "cl"
            TreeView1.Nodes.Add cleNoeudTable, tvwChild, cleNoeudChamps, "champs"
            TreeView1.Nodes.Add cleNoeudTable, tvwChild, cleNoeudCles, "clés"
     
            Do While Not rstEnfant.EOF
     
                'ajoute au treeview le champ et ses caractéristiques
                cleNoeudChampCourant = cleNoeudChamps & cmpt2
                TreeView1.Nodes.Add cleNoeudChamps, tvwChild, cleNoeudChampCourant, rstEnfant!COLUMN_NAME
                TreeView1.Nodes.Add cleNoeudChampCourant, tvwChild, cleNoeudChampCourant & "n", _
                                    "peut être NULL -> " & rstEnfant!IS_NULLABLE
                TreeView1.Nodes.Add cleNoeudChampCourant, tvwChild, cleNoeudChampCourant & "t", _
                                    "Type -> " & Switch(rstEnfant!DATA_TYPE = adInteger, "Long", _
                                                            rstEnfant!DATA_TYPE = adSmallInt, "Entier", _
                                                            rstEnfant!DATA_TYPE = adWChar, "String")
                If Not IsNull(rstEnfant!CHARACTER_MAXIMUM_LENGTH) Then _
                    TreeView1.Nodes.Add cleNoeudChampCourant, tvwChild, cleNoeudChampCourant & "l", _
                                        "Max Caractères -> " & rstEnfant!CHARACTER_MAXIMUM_LENGTH
                If Not IsNull(rstEnfant!NUMERIC_PRECISION) Then
                    TreeView1.Nodes.Add cleNoeudChampCourant, tvwChild, cleNoeudChampCourant & "p", _
                                        "Précision -> " & rstEnfant!NUMERIC_PRECISION
                    TreeView1.Nodes.Add cleNoeudChampCourant, tvwChild, cleNoeudChampCourant & "e", _
                                        "Echelle -> " & rstEnfant!NUMERIC_SCALE
                End If
     
                'vérifie si le champ est indexé
                Set rstCompl = New ADODB.Recordset
                Set rstCompl = MaConn.OpenSchema(adSchemaIndexes, Array(Empty, Empty, Empty, Empty, NomTable))
                Indexed = False
                Do While Not rstCompl.EOF
                    If rstCompl!COLUMN_NAME = rstEnfant!COLUMN_NAME Then
                        Indexed = True
                        TreeView1.Nodes.Add cleNoeudChampCourant, tvwChild, cleNoeudChampCourant & "i", _
                                            "Indexé -> Oui" & IIf(rstCompl!Unique, " sans ", " avec ") & "doublons"
                        Exit Do
                    End If
                    rstCompl.MoveNext
                Loop
                If Not Indexed Then TreeView1.Nodes.Add cleNoeudChampCourant, tvwChild, _
                                                        cleNoeudChampCourant & "i", "Indexé -> Non"
                rstCompl.Close
                Set rstCompl = Nothing
                cmpt2 = cmpt2 + 1
                rstEnfant.MoveNext
            Loop
            rstEnfant.Close
            cmpt2 = 2
     
            'recherche les clés de la tables
            Set rstEnfant = MaConn.OpenSchema(adSchemaPrimaryKeys, Array(Empty, Empty, NomTable))
            If Not rstEnfant.BOF Then
                'ajout de la clé primaire si elle existe
                TreeView1.Nodes.Add cleNoeudCles, tvwChild, cleNoeudTable & "cp", _
                                    "Clé primaire -> " & rstEnfant!COLUMN_NAME
            End If
            rstEnfant.Close
     
            'Ajout  des clés étrangères et de leurs caractéristiques
            Set rstEnfant = MaConn.OpenSchema(adSchemaForeignKeys, _
                                              Array(Empty, Empty, Empty, Empty, Empty, NomTable))
            Do While Not rstEnfant.EOF
                cleNoeudCleCourante = cleNoeudCles & cmpt2
                TreeView1.Nodes.Add cleNoeudCles, tvwChild, cleNoeudCleCourante, _
                                    "Clé Etrangère -> " & rstEnfant!FK_COLUMN_NAME
                TreeView1.Nodes.Add cleNoeudCleCourante, tvwChild, cleNoeudCleCourante & "cl", _
                                    "Clé de la table -> " & rstEnfant!PK_TABLE_NAME
                TreeView1.Nodes.Add cleNoeudCleCourante, tvwChild, cleNoeudCleCourante & "ur", _
                                    "Update Rules -> " & rstEnfant!UPDATE_RULE
                TreeView1.Nodes.Add cleNoeudCleCourante, tvwChild, cleNoeudCleCourante & "dr", _
                                    "Delete Rules -> " & rstEnfant!DELETE_RULE
                cmpt2 = cmpt2 + 1
                rstEnfant.MoveNext
            Loop
            cmpt1 = cmpt1 + 1
            rstEnfant.Close
            Set rstEnfant = Nothing
        End If
        rstTable.MoveNext
    Loop
    TreeView1.Style = tvwTreelinesPlusMinusText
    End Sub
    les recommandation qui allaient avec sont:
    Pour lire la structure des bases on utilise la méthode OpenSchema de l'objet Connection. Cette méthode permet de lire des informations du schéma, soit globales, soit restreintes selon les paramètres passés.


    Pour exécuter l’exemple suivant, vous devez sélectionner la référence "Microsoft ActiveX Data Object 2.X Library" ainsi que le composant "Microsoft Windows Common Controls 6.0". Déposez sur votre feuille un contrôle TreeView nommé "TreeView1", un bouton de commande nommé "Command1", et un textbox "Text1". Puis copiez le code ci-dessous dans le module de la form.
    Pour convertir VBNET vers C#:http://www.developerfusion.co.uk/Uti...btocsharp.aspx
    allez a plus!!!!

Discussions similaires

  1. Lecture dans une base de donnée SQL en VBS
    Par maxtofurious dans le forum VBScript
    Réponses: 1
    Dernier message: 10/12/2010, 18h49
  2. [MySQL] Lecture d'une base de données
    Par nicolasSENAME dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 21/09/2008, 08h23
  3. Réponses: 2
    Dernier message: 29/04/2008, 13h59
  4. VBA : lecture d'une base de données SQL *.gdb
    Par _Nimy_ dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 17/04/2008, 11h16
  5. [VB]Lecture dans une base de donnée posant problème
    Par polo-j dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 23/03/2006, 00h16

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo