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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    É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
    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 confirmé
    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
    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 averti
    É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
    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 confirmé
    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
    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
    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