Précédent   Forum du club des développeurs et IT Pro > Dotnet > Accès aux données > ADO.NET
ADO.NET Forum d'entraide sur le développement avec les services d'accès aux données disponibles avec ADO.NET.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 28/05/2012, 22h14   #1
doomx
Candidat au titre de Membre du Club
 
Inscription : juin 2007
Messages : 16
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 16
Points : 11
Points : 11
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 :
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 :
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
doomx est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/06/2012, 20h20   #2
Papy Normand
Membre du Club
 
Homme Patrick LAMBIN
Retraité
Inscription : décembre 2010
Messages : 30
Détails du profil
Informations personnelles :
Nom : Homme Patrick LAMBIN
Localisation : France

Informations professionnelles :
Activité : Retraité

Informations forums :
Inscription : décembre 2010
Messages : 30
Points : 41
Points : 41
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
Papy Normand est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 03h40.


 
 
 
 
Partenaires

Hébergement Web