Comment savoir si une instruction de mise à jour SQL a été exécutée avec succès ou échoué? P>
J'utilise SQL Server 2005 et C # ASP.NET. P>
Puis-je obtenir le succès ou l'infomation échouée dans C # sans ajouter du code SQL dans l'ancien relevé SQL? P>
4 Réponses :
Utilisation d'un bloc d'essai / attraper et peut-être que RAISError pour envoyer un message. P>
Vous pouvez utiliser @@ RowCount pour obtenir le nombre de lignes affecté par la dernière requête. Cela peut être utilisé pour décider si votre où la clause code> correspondait réellement quelque chose, par exemple. UPDATE mytable SET
field = 'SomeValue'
WHERE
id = 1234
IF @@ROWCOUNT = 0
BEGIN
-- No row with id=1234
END
Vous pouvez utiliser la valeur de retour de l'exécutenonquery pour vérifier si la mise à jour a été réussie ou non.
SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString);
SqlCommand cmd = new SqlCommand("sp_updateData", con);
cmd.CommandType = CommandType.StoredProcedure;
SqlParameter p1 = new SqlParameter("@id", SqlDbType.Int);
p1.Value = 1;
p1.Direction = ParameterDirection.Input;
SqlParameter p2 = new SqlParameter("@name", SqlDbType.VarChar,50);
p2.Value = "sls";
p2.Direction = ParameterDirection.Input;
cmd.Parameters.Add(p1);
cmd.Parameters.Add(p2);
try
{
con.Open();
//count will be the number of rows updated. will be zero if no rows updated.
int count = cmd.ExecuteNonQuery();
if (count > 0)
{
Console.WriteLine("Update Success!!!");
}
else
{
Console.WriteLine("No Updates!!!");
}
Console.ReadLine();
}
catch (SqlException ex)
{
Console.WriteLine("Update Failed coz.. " + ex.Message);
}
finally
{
con.Close();
}
Qu'est-ce que "échoué" signifie? P>
Si vous avez échoué, une erreur a été générée - la syntaxe SQL, la contrainte ou la violation du FK - Testez / attraper, érayerror, etc. P>
ou, si par échec, vous voulez dire qu'aucune ligne de lignes n'a été mise à jour, la valeur de retour de l'exécutenonquery vous donnera une rangée si vous ne supprimez pas RowCount dans votre procédure stockée. P>
Dans le studio de gestion? Utiliser C #, Delphi, ...?
Peux-tu être plus précis? Où vous exécutez-vous la mise à jour? Est-ce une application ou un studio de gestion juste ou quoi? Si c'est une application, quel genre de? Quelle langue utilisez-vous? Mais généralement, s'il échoue, vous obtiendrez une erreur, vous devriez donc avoir un gestionnaire d'erreur :)