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

VB.NET Discussion :

Savoir si une table existe dans une base


Sujet :

VB.NET

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17
    Points : 14
    Points
    14
    Par défaut Savoir si une table existe dans une base
    Bonjour,

    Existe-t-il un moyen en vb, une fois que l'on a défini la connexion à la base de données de vérifier si une table 'matable' existe déjà ou non ?

    Je vous met ci-dessous le code que j'ai créé, mais je crois que ma logique et celle du pc ne sont pas compatible...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    'Création de la table clients
            chaine = "select * from clients_maintenance"
            Marequete = New OleDbCommand(chaine)
            MonadaptateurOle = New OleDbDataAdapter(Marequete)
            Marequete.Connection = MaconnexionOle
            MonadaptateurOle.Fill(Latable)
            If Latable.TableName = "" Then
                MarequeteOle.CommandText = "CREATE TABLE clients_maintenance (Id_cli COUNTER not null, Code_cli VARCHAR(15) not null, Nom_cli VARCHAR (255) not null, Cp_cli VARCHAR(6) null, Ville_cli VARCHAR(255) null, Tel_cli VARCHAR(15) null, Fax_cli VARCHAR(15) null, Port_cli VARCHAR(15) null, Courriel_cli VARCHAR(255) null, Site_cli VARCHAR(255) null, PRIMARY KEY (Id_cli))"
                MarequeteOle.ExecuteNonQuery()
            End If
    Si quelqu'un pouvait m'aider à comprendre à quel endroit ma logique ne l'est plus.

    Cordialement.

  2. #2
    Membre émérite Avatar de mactwist69
    Homme Profil pro
    Développement VB.NET
    Inscrit en
    Janvier 2007
    Messages
    1 707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développement VB.NET
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 707
    Points : 2 528
    Points
    2 528
    Par défaut
    Je ne pense pas que tu utilises la bonne manière.

    Déjà ca: MonadaptateurOle.Fill(Latable), ca ne lève pas d'exception (si la table n'existe pas) ?

    Tu utilises quoi comme base de donneés ?

    Par exemple en mysql, dans la requete de création de table, tu peux mettre un "IF NOT EXISTS", donc ne creera la table que si elle n'existe pas.

    Ensuite toujours dans mysql, il y a une bdd: information schema, qui contient la liste de toute les tables présentes, donc je passe par la pour verifier l'existence.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17
    Points : 14
    Points
    14
    Par défaut
    Bonjour,
    Je sais qu'il y a mieux comme bdd, mais access m'est imposé.
    Cordialement

  4. #4
    Membre éprouvé Avatar de yonpo
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2010
    Messages
    617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2010
    Messages : 617
    Points : 947
    Points
    947
    Par défaut
    Salut,

    Tu n'as pas précisé avec quelle bd tu travaillles mais j'en déduit que c'est avec Access.

    Tu peux obtenir le schéma de la bd et le nom des tables qui la composent:
    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
     
    Dim listeTables as New List(Of String)
     
    'Obtient les tables et les vues
                Dim dtt as DataTable = Connexion.GetOleDbSchemaTable(System.Data.OleDb.OleDbSchemaGuid.Tables, New Object() {Nothing, Nothing, Nothing, Nothing})
     
                'Récupère le nom des tables dont TABLE_TYPE est égale à TABLE
                For i As Integer = 0 To dtt.Rows.Count - 1
     
                    If dtt.Rows(i)!TABLE_TYPE.ToString = "TABLE" Then
     
                        listeTables.Add(dtt.Rows(i)!TABLE_NAME.ToString())
     
                    End If
     
                Next
    Ensuite, il suffit de parcourirt la liste afin de savoir si une table existe ou non dans la bd

  5. #5
    Membre émérite Avatar de mactwist69
    Homme Profil pro
    Développement VB.NET
    Inscrit en
    Janvier 2007
    Messages
    1 707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développement VB.NET
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 707
    Points : 2 528
    Points
    2 528
    Par défaut
    Ton code est censé marcher, mais il faudrait faire:

    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
    'Création de la table clients
    Dim TableExiste as Boolean = true
     
    chaine = "select * from clients_maintenance"
    Marequete = New OleDbCommand(chaine)
    MonadaptateurOle = New OleDbDataAdapter(Marequete)
    Marequete.Connection = MaconnexionOle
    Try
         MonadaptateurOle.Fill(Latable)
    Catch ex as Exception
         'LA TABLE n'existe pas
         TableExiste = false
    End Catch
     
    If TableExiste = false Then
    MarequeteOle.CommandText = "CREATE TABLE clients_maintenance (Id_cli COUNTER not null, Code_cli VARCHAR(15) not null, Nom_cli VARCHAR (255) not null, Cp_cli VARCHAR(6) null, Ville_cli VARCHAR(255) null, Tel_cli VARCHAR(15) null, Fax_cli VARCHAR(15) null, Port_cli VARCHAR(15) null, Courriel_cli VARCHAR(255) null, Site_cli VARCHAR(255) null, PRIMARY KEY (Id_cli))"
    MarequeteOle.ExecuteNonQuery()
    End If

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17
    Points : 14
    Points
    14
    Par défaut
    Mille mercis pour votre aide
    Cordialement,
    Guznat

  7. #7
    Membre émérite Avatar de mactwist69
    Homme Profil pro
    Développement VB.NET
    Inscrit en
    Janvier 2007
    Messages
    1 707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développement VB.NET
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 707
    Points : 2 528
    Points
    2 528
    Par défaut
    Pense a marquer le post comme résolu

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 7
    Dernier message: 15/04/2011, 15h19
  2. Réponses: 2
    Dernier message: 08/11/2007, 10h54
  3. Tester si une table existe dans une base access
    Par codial dans le forum Bases de données
    Réponses: 6
    Dernier message: 28/03/2007, 08h39
  4. comment savoir si une table existe dans la base?
    Par isa21493 dans le forum ASP
    Réponses: 6
    Dernier message: 01/09/2005, 17h09
  5. Réponses: 2
    Dernier message: 20/05/2005, 10h18

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