J'ai un service Web qui exécute une procédure stockée. Ma fonction de service Web renvoie la chaîne []. Parfois, j'ai besoin d'appeler le service Web plusieurs fois. Pour des raisons d'optimisation, j'ai pensé à ajouter une fonction à mon service Web qui exécute la procédure stockée plusieurs fois, dans un pour la boucle. De cette façon, le service Web n'est appelé qu'une seule fois au lieu de plusieurs fois.Puis-je exécuter une procédure stockée plusieurs fois dans une boucle for?
1-Est-ce que ma pensée est correcte?
2-Ci-dessous est mon code, uniquement la partie spécifique au problème décrit ci-dessus.
3-Est-ce que ce n'est simplement pas possible de le faire en utilisant une boucle for?
Mon problème: Si je n'utilise ce code que pour appeler la procédure stockée une fois, cela fonctionne, mais dès qu'il y en a plus (pour la boucle se répète une deuxième fois), le bloc catch est accédé.
Si vous pouvez m'expliquer pourquoi cela se produit et/ou suggérer une solution/solution de contournement, j'apprécierais vraiment.
try
{
for (int i = 0; i < number; i++)
{
connection.Open();
cmd = new SqlCommand();
//SqlTransaction transaction;
transaction = connection.BeginTransaction();
cmd.Transaction = transaction;
cmd.Connection = connection;
cmd.Parameters.Clear();
cmd.CommandText = "InsertMsg";
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("@ID", SqlDbType.VarChar).Value = IDs[i];
cmd.Parameters.Add("@name", SqlDbType.VarChar).Value = names[i];
cmd.Parameters.Add("@age", SqlDbType.DateTime).Value = age;
cmd.ExecuteNonQuery();
data[i] = IDs[i];
transaction.Commit();
}
connection.Close();
return data;
}
catch (SqlException ex)
{
transaction.Rollback();
data[0] = "Error";
return data;
}
}
Quelle est l'exception que vous obtenez? – maccettura
Avez-vous débogué à travers le code pour voir quoi et pourquoi échoue? – xxbbcc
J'appelle le service Web via une référence Web, donc je ne pouvais pas voir comment le déboguer – SystemFailure