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

MS SQL Server Discussion :

Insert Auto increment C# SQL Server


Sujet :

MS SQL Server

  1. #1
    Membre à l'essai
    Étudiant
    Inscrit en
    Décembre 2008
    Messages
    45
    Détails du profil
    Informations personnelles :
    Âge : 34

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2008
    Messages : 45
    Points : 23
    Points
    23
    Par défaut Insert Auto increment C# SQL Server
    bonjour,

    avant même de commencer .. je me suis posé la question où je devais placer ce topic. (c'est pas forcément le bon endroit :s )

    voilà pour en venir au problème.

    je suis sous visual studio en C# avec un base de donnée SQL Server!

    je voudrai insérer des données qui contiennent un code de format INT mais AUTO INCREMENT

    j'ai essayé avec :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    INSERT INTO probleme (codePB, libellePB, motifPB) 
    VALUES(x,'" + titre + "','" + motif );";
     
    INSERT INTO probleme (codePB, libellePB, motifPB) 
    VALUES(AUTO,'" + titre + "','" + motif );";
    mais rien à faire alors que lorsque je mets en dur la requête elle marche avec:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    INSERT INTO probleme (libellePB, motifPB) 
    VALUES('" + titre + "','" + motif );
    et il me met dans le champ codePB un numero automatiquement..

    je ne comprend pas.. pouvez vous m'aider

    merci d'avance

  2. #2
    Expert éminent sénior
    Avatar de mikedavem
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2005
    Messages
    5 450
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Distribution

    Informations forums :
    Inscription : Août 2005
    Messages : 5 450
    Points : 12 891
    Points
    12 891
    Par défaut
    Bonsoir,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    INSERT INTO probleme (codePB, libellePB, motifPB) 
    VALUES(x,'" + titre + "','" + motif );";
     
    INSERT INTO probleme (codePB, libellePB, motifPB) 
    VALUES(AUTO,'" + titre + "','" + motif );";
    Si vous avez défini la colonne codePB en tant que colonne incrémentée, vous ne pouvez pas forcer la valeur comme vous le faites dans votre code.

    Essayez ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    INSERT INTO probleme (libellePB, motifPB) 
    VALUES('" + titre + "','" + motif + "');
    ++

  3. #3
    Membre à l'essai
    Étudiant
    Inscrit en
    Décembre 2008
    Messages
    45
    Détails du profil
    Informations personnelles :
    Âge : 34

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2008
    Messages : 45
    Points : 23
    Points
    23
    Par défaut
    j'ai essayé de faire ce que vous m'avez dit et voilà le message d'erreur qui s'affiche lors de

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SqlDataReader reader = command.ExecuteReader()
    Impossible d'insérer la valeur NULL dans la colonne 'codePB', table 'C:\...\MABASEST.MDF.dbo.t_probleme'. Cette colonne n'accepte pas les valeurs NULL. Échec de INSERT.
    L'instruction a été arrêtée.



  4. #4
    Expert éminent sénior
    Avatar de mikedavem
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2005
    Messages
    5 450
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Distribution

    Informations forums :
    Inscription : Août 2005
    Messages : 5 450
    Points : 12 891
    Points
    12 891
    Par défaut
    Votre colonne codePB ne doit pas être défini en tant que IDENTITY, c'est à dire qu'un numéro incrémentale est généré par SQL Server en automatique.

    Pour le vérifier vous pouvez utiliser la vue système sys.columns

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT 
     is_identity
    FROM sys.columns
    WHERE object_id = OBJECT_ID('dbo.probleme');
    ++

  5. #5
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Points : 12 371
    Points
    12 371
    Par défaut
    Bonjour,

    Le mieux reste encore d'écrire une procédure stockée qui fasse l'INSERT, vous ne faites alors que l'appeler, et SQL Server s'occupe du reste

    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
    CREATE PROCEDURE ps_probleme_ajouter
    	@_libellePB varchar(64)
    	, @_motifPB varchar(64)
    	, @_ID_probleme INT = NULL
    AS
    BEGIN
    	INSERT INTO dbo.probleme
    	(
    		libellePB
    		, motifPB
    	)
    	VALUES
    	(
    		@_libellePB
    		, @_motifPB
    	)
     
    	SELECT @_ID_probleme = SCOPE_IDENTITY()
    END
    Un bon exemple d'appel en C# avec un paramètre OUTPUT est donné ici

    @++

Discussions similaires

  1. auto increment avec sql server
    Par bargougui86 dans le forum Développement
    Réponses: 2
    Dernier message: 17/03/2009, 16h30
  2. auto increment avec sql server comme avec mysql
    Par skystef dans le forum Accès aux données
    Réponses: 6
    Dernier message: 21/09/2007, 08h22
  3. auto incrementation en SQL server
    Par jefferson dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 23/12/2004, 11h10
  4. [debutant]Auto incrementation sur sql-server 2000
    Par syl2095 dans le forum MS SQL Server
    Réponses: 9
    Dernier message: 18/11/2004, 18h00
  5. Réponses: 2
    Dernier message: 05/01/2004, 11h23

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