c'est mon spLa procédure stockée ne retourne pas 0
CREATE PROCEDURE DeteleTitle
(
@TitleID int
)
AS
BEGIN
IF EXISTS(Select TitleID from Titles WHERE [email protected])
BEGIN
DELETE FROM Titles WHERE [email protected]
SELECT @TitleID
END
ELSE
BEGIN
SELECT 0
END
END
Méthode où je l'appelle est: -
public Int32 DeleteTitle(Int32 TitleID)
{
try
{
int ds=0;
SqlParameter[] sqlparam=new SqlParameter[1];
sqlparam[0]=(@TitleID,TitleID);
ds=Convert.ToInt32(SqlHelper.ExecuteScalar(ConfigurationManager.ConnectionStrings["con"].ConnectionString,CommandType.StoredProcedure,"DeleteTitle",sqlparam).Tables[0]);
return ds;
}
catch(Exception ex)
{
return 0;
}
}
maintenant TitleID est une clé étrangère dans de nombreux tableaux. Si l'enregistrement de certains Table utilise TitreID, il déclenche cette exception qui dit «Violation de clé étrangère n truc». Dans ma procédure stockée ci-dessus, je sélectionne zéro dans le bloc else si la suppression échoue. Lorsque la suppression est réussie, elle renvoie la valeur TitleID comme 50, 99 ou autre. Maintenant, ce qui se passe, c'est que lorsque delete n'est pas réussi, il ne retourne pas zéro. Je voulais qu'un message soit affiché sur l'écran en fonction de cette valeur zéro renvoyée par la procédure Delete Stored mais quand il n'a renvoyé aucune valeur (lorsque la suppression a échoué), j'ai renvoyé zéro dans le bloc catch de ma méthode DeleteTitle().
Maintenant, j'ai deux questions: -
- Pourquoi la procédure stockée renvoie pas zéro lorsque suppression a échoué?
- Renvoie zéro dans le bloc catch comme je l'ai fait au-dessus de la bonne façon? Je ne savais pas comment vous récupérez le numéro d'Exception de la Clé Étrangère et des trucs donc je viens juste de retourner zéro dans le bloc catch.
Vous devriez au minimum attraper une sqlexception (je crois que c'est correct, sinon le chercher).Actuellement vous attrapez toutes sortes d'exceptions sans rapport ici potentiellement et juste en les ignorant. Vous devriez vraiment attraper des exceptions spécifiques afin que les exceptions inattendues puissent surgir jusqu'à un gestionnaire d'erreurs au niveau de l'application pour traiter, journaliser et quoi que ce soit d'autre. – Chris