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 :

Récupéation de donnée d'une colonne de base de données de SQL serveur


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    129
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 129
    Par défaut Récupéation de donnée d'une colonne de base de données de SQL serveur
    Bonjour,

    Actuellement, je reprend une partie de code qui pemet de récupéré le nom d'une colonne en base de donnée de la manière suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Dim schemaTable As DataTable = varConnection.GetSchema(SqlClientMetaDataCollectionNames.Columns, restrictions)
     
            Dim obj As Object
            Dim val As String
     
            For Each row As DataRow In schemaTable.Rows
                Dim field As New DbFieldInfo()
                field.Name = DirectCast(row("COLUMN_NAME"), String)
            next
    Maintenant je voudrais récupérer la description de cette colnne de ma base de donnée, mais mon schémaTable ne possède pas de colonne qui me permet de le récupérer.

    Existe-il un aure moyen de le récupérer, ou de faire une modification à "schemaTable" pour le réalisé ? Ou même en base ?

    Merci d'avance

  2. #2
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 204
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 204
    Par défaut
    pour sql server il y a des tables de description

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM sys.COLUMNS WHERE object_id = object_id('nom de la table')


    les infos de types sont dans sys.types
    les tables sont dans sys.tables
    il y a aussi sys.objects qui contient tous les objets

    pour modifier une colonne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ALTER TABLE nom_de_la_table ALTER COLUMN nom_de_la_colonne nouveau_type
    après il y a tout un langage de manipulation de la structure
    le langage DML (data manipulation) c'est select update insert delete
    le langage DDL (data definition) c'est tout ce qui est create alter drop etc...

    tu trouveras donc des infos sur google sur tout ce qu'on peut faire
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    129
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 129
    Par défaut
    Oui, effectivement sa me permet davoir une table description.
    Mais cest pas cette descriptin la à laquelle je pensait (j'ai manqué de précision).

    quand je lance
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM sys.COLUMNS WHERE object_id = object_id('nom de la table')
    j'obtient quelque peut les mêmes données que javais à la base, alors que jaimerais obtenir le texte de la propriété descriptin de chaque colonne (le texte que j'ai tappé dans dans le camps descriptin dans le concepteur de table). Et il s'avère qu'il ne se trouve pas dans ces tableau de descriptions ..., a moins que je ne lest pas vue...

  4. #4
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 204
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 204
    Par défaut
    les descriptions font partie des extended properties d'sql server
    elle ne sont pas mappées dans le framework

    il faut soit passer par SMO (nécessite quelques dll en plus)
    soit utiliser http://msdn.microsoft.com/fr-fr/library/ms179853.aspx (à priori c'est ca qui permet de récupérer les extended properties)
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    129
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 129
    Par défaut
    ok, donc si je compend bien, n'étant pas mappé dans le framework, je suis obligé de faire l'appel en base directement comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT   *
    FROM   ::fn_listextendedproperty (NULL, 'user', 'dbo', 'table', 'NomDeMaTable', 'column', default)
    qui me pemet d'obternir le résultat que je souhaite. Donc sa ne sert à rien que je cherche quelque chose en code qui me ferais la même chose que ma commande SQL ? (juste histoire de limiter une multitude d'appels direct en base ), mais sinon je ferais déjà avec sa

  6. #6
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 204
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 204
    Par défaut
    de toute facon meme s'il y avait quelque chose dans le framework, ca ferait une connexion à la base pour retrouver les infos

    tout comme getschematable fait un select from sys.columns

    donc rien ne t'empeche à partir de là de faire une fonction quelque part qui s'occupe de faire ca, comme ca tu auras le code que tu cherches et pas des accès à la db de partout dans le code

    si tu as déjà fait une classe d'encapsulation pour les accès aux données, tu peux te débrouiller pour rajouter les propriétés qui t'intéressent dans ton modèle objet
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

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

Discussions similaires

  1. [XL-2007] Copier une base de données selon une date dans une colonne
    Par Tobalich dans le forum Excel
    Réponses: 12
    Dernier message: 12/07/2014, 18h16
  2. Affichage d'une partie des données d'une table de Base de données
    Par zpico dans le forum Débuter avec Java
    Réponses: 1
    Dernier message: 15/05/2012, 11h47
  3. creation d'une base de donnée a plusieur colonnes
    Par slimebdx dans le forum LabVIEW
    Réponses: 2
    Dernier message: 30/03/2010, 03h06
  4. Réponses: 10
    Dernier message: 12/01/2010, 11h06
  5. Réponses: 1
    Dernier message: 07/10/2009, 16h20

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