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 :

getschema et auto increment


Sujet :

VB.NET

  1. #1
    Membre du Club
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Novembre 2004
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2004
    Messages : 61
    Points : 47
    Points
    47
    Par défaut getschema et auto increment
    Bonjour à tous,

    J'aimerais savoir si il est possible de récupérer l'info sur l'autoincrement d'une colonne par le getschema et si oui dans quel table je dois taper?


    Pour information je parle du getschema du connection.getschema de l'assembly System.Data.SqlClient.

    si je ne peux pas passer par le getschema quel requête directement dans sql me donnera l'info dont j'ai besoin (sql server)?

    Merci d'avance pour vos réponses.

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Août 2008
    Messages
    310
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 310
    Points : 347
    Points
    347
    Par défaut
    Salut,

    Tu parles du numéro de ligne de l'interface SQL ou d'une colonne qui est de type autoincrement ?

    Si c'est le cas 2, c'est comme pour récupérer les infos des autres colonnes contenus dans le schéma :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    leSchema.Rows(i).Item(NomDuChamps)

  3. #3
    Membre du Club
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Novembre 2004
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2004
    Messages : 61
    Points : 47
    Points
    47
    Par défaut
    je te remercie mais ce n'est pas de ça que je parle, en fait je voulais savoir comment je pouvais faire en vb pour savoir si une colonne d'une table SQL est auto incrément ou non.

    Mais c'est bon j'ai trouvé ma réponse avec une requête directement en base j'envois la requête demain pour ceux que ça pourraient intéresser car la j'ai pas mon code sous les yeux .

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    Je sais pas si c'est pareil avec tous les SGBD, mais par exemple pour SQLite tu peux faire un truc comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Dim columns As DataTable = connection.GetSchema("Columns")
    Dim rows As DataRow() = columns.Select("TABLE_NAME = 'la_table' AND COLUMN_NAME = 'la_colonne'")
    If rows.Length > 0 Then
        Dim la_colonne As DataRow = rows(0)
        Dim autoincrement As Boolean = CBool(la_colonne("AUTOINCREMENT"))
    End If

  5. #5
    Membre du Club
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Novembre 2004
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2004
    Messages : 61
    Points : 47
    Points
    47
    Par défaut
    nan, justement pour une raison que j'ignore il n'y a pas la colonne "autoincrement" sur le schema des colonnes en sql server.

    Donc pour infos voila ce qui m'a permis d'avoir toutes les infos nécessaires à la récupération des infos de colonnes pour "copier" une table sql:

    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
    Dim sqlRequete As String
                'Requete de lecture des champs de la table avec leurs attributs
                sqlRequete = "SELECT INFORMATION_SCHEMA.COLUMNS.TABLE_NAME, INFORMATION_SCHEMA.COLUMNS.COLUMN_NAME," _
                & " INFORMATION_SCHEMA.COLUMNS.ORDINAL_POSITION, INFORMATION_SCHEMA.COLUMNS.COLUMN_DEFAULT" _
                & ", INFORMATION_SCHEMA.COLUMNS.IS_NULLABLE, INFORMATION_SCHEMA.COLUMNS.DATA_TYPE, " _
                & " INFORMATION_SCHEMA.COLUMNS.CHARACTER_MAXIMUM_LENGTH, RQ1.id, COALESCE (RQ3.cle, 0) AS cle" _
                & ", INFORMATION_SCHEMA.COLUMNS.NUMERIC_PRECISION," _
                & " INFORMATION_SCHEMA.COLUMNS.NUMERIC_SCALE, RQ2.is_identity FROM" _
                & " INFORMATION_SCHEMA.COLUMNS LEFT OUTER JOIN (SELECT COLUMN_NAME, TABLE_NAME, '1' AS" _
                & " is_identity FROM INFORMATION_SCHEMA.COLUMNS AS COLUMNS_1 WHERE (TABLE_SCHEMA = 'dbo')" _
                & " AND (COLUMNPROPERTY(OBJECT_ID(TABLE_NAME), COLUMN_NAME, 'IsIdentity') = 1)) AS RQ2 ON " _
                & " INFORMATION_SCHEMA.COLUMNS.COLUMN_NAME = RQ2.COLUMN_NAME AND " _
                & " INFORMATION_SCHEMA.COLUMNS.TABLE_NAME = RQ2.TABLE_NAME LEFT OUTER JOIN (SELECT TOP (1)" _
                & " id, name FROM sys.sysobjects WHERE (xtype = 'U')) AS RQ1 ON RQ1.name =" _
                & " INFORMATION_SCHEMA.COLUMNS.TABLE_NAME LEFT OUTER JOIN (SELECT '1' AS cle, COLUMN_NAME," _
                & " TABLE_NAME FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE WHERE" _
                & " (OBJECTPROPERTY(OBJECT_ID(CONSTRAINT_NAME), 'IsPrimaryKey') = 1)) AS RQ3 ON " _
                & " RQ3.TABLE_NAME = INFORMATION_SCHEMA.COLUMNS.TABLE_NAME AND RQ3.COLUMN_NAME =" _
                & " INFORMATION_SCHEMA.COLUMNS.COLUMN_NAME WHERE (INFORMATION_SCHEMA.COLUMNS.TABLE_NAME ='" _
                & Replace(NomTable, "'", "''") & "') ORDER BY INFORMATION_SCHEMA.COLUMNS.ORDINAL_POSITION"
                Dim dttable As New DataTable
                dttable = sql_reader.EnvoieRequete(sqlRequete)
    remplacer le nom de la table par celui que vous chercher .
    pour ceux à qui ça peux servir

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

Discussions similaires

  1. auto-increment
    Par fafet dans le forum Requêtes
    Réponses: 2
    Dernier message: 11/07/2003, 15h05
  2. [MYSQL] valeur auto-increment
    Par alex1er dans le forum Requêtes
    Réponses: 5
    Dernier message: 10/07/2003, 12h26
  3. Auto Increment
    Par Guizz dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 23/06/2003, 18h36
  4. Nom du champs auto-incrementé
    Par norroy dans le forum Requêtes
    Réponses: 2
    Dernier message: 17/06/2003, 18h30
  5. Pb d'auto-incrément sur une table v7
    Par Nivux dans le forum Paradox
    Réponses: 9
    Dernier message: 26/12/2002, 12h05

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