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

ADO.NET Discussion :

Récuperer une erreur SQL Server via Dataset typé


Sujet :

ADO.NET

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juin 2007
    Messages : 17
    Points : 19
    Points
    19
    Par défaut Récuperer une erreur SQL Server via Dataset typé
    Bonjour,

    J'utilise un Dataset Typé dont l'une des datatables est représentée par une requête composée de deux tables dans la base de données. Mon problème est que ma procedure stocké pour l'ajout, effectue 2 instructions INSERT (une pour chaque table). Mon problème est que je ne suis pas capable de récupérer une erreur qui survient dans la procédure stocké de façon convenable.

    Présentement j'ai

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    INSERT INTO TABLE1 --Succès
    INSERT INTO TABLE2 -- Erreur
    IF @@ERROR > 0
    	RAISERROR('Erreur', 16, 1)
    Cette instruction ajoute dans la table 1, mais pas dans la table 2. Du coté du SQLDataAdapter, il n'y a pas d'erreur donc la transaction réussit (COMMIT)

    J'ai essayé l'alternative suivante
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
     
    BEGIN TRAN
     
    INSERT INTO TABLE1 --Succès
    INSERT INTO TABLE2 -- Erreur
     
    IF @@ERROR > 0
     ROLLBACK TRAN
    ELSE
     COMMIT TRAN
    Le problème ici est qu'étant donné que le SQLDataadapter demarre déjà une transaction, je me retrouve donc avec des transactions imbriquées.

    Je ne veux pas toucher au mécanisme automatique des datasets mis à part le système d'évènement (ex. : RowUpdated)

    Une solution du coté SQL server serait plus que bienvenue

    Merci
    DoOmX

  2. #2
    Membre du Club
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2010
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2010
    Messages : 34
    Points : 50
    Points
    50
    Par défaut Variables utilisées pour le traitement des erreurs
    Puisque vous êtes dans une procédure stockée , je vous conseillerais de tester @@ERROR et de récupérer différentes valeurs liées à l'erreur.
    Voir les liens suivants ( pour une fois , je les donne en français )
    http://msdn.microsoft.com/fr-fr/libr...(SQL.105).aspx
    http://msdn.microsoft.com/fr-fr/libr...(SQL.105).aspx
    http://msdn.microsoft.com/fr-fr/libr...(SQL.105).aspx

    si vous avez développé avec les classes de l'espace de nom System.Data.SqlClient, vous retrouverez facilement les équivalents de Class,ErrorCode,Line,Message,Server,Procedure,State de la classe SqlException

Discussions similaires

  1. Accéder à une bd SQl Server via Windev sur le net ?
    Par Root_JDK dans le forum WinDev
    Réponses: 2
    Dernier message: 17/01/2007, 12h04
  2. [VB]Importer une vue SQL Server via Visual Basic
    Par NoViceDel dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 24/05/2006, 20h57
  3. connexion à une base sql server via access
    Par gunico dans le forum MS SQL Server
    Réponses: 9
    Dernier message: 03/03/2006, 12h28
  4. connexion à une base Sql Server via Access et ADODB
    Par gunico dans le forum Projets ADP
    Réponses: 5
    Dernier message: 28/02/2006, 13h26
  5. Accéder à une bdd SQL server via un pc distant
    Par shako95 dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 06/12/2005, 23h38

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