J'utilise le code suivant pour obtenir tous les enregistrements de données d'une base de données MS SQL et j'essaie de mettre à jour chaque enregistrement. Le code est utilisé dans un WebService. Le problème est, que le code fonctionne bien si j'ai 1000 enregistrements de données, mais maintenant j'ai 20000 enregistrements de données et le code retourné avec un délai d'attente. Ensuite, j'ai mis le cmd.CommandTimeout à zéro pour ne pas avoir de délai. Maintenant, quand j'appelle la fonction dans IE WebSvc la fenêtre d'IE est toujours vide et essaye toujours de charger quelque chose mais rien ne se produit. Seulement 150 datarecords sont mis à jour.Récupérer et mettre à jour 20000 enregistrements de données cesse de fonctionner
Avez-vous une idée de l'origine du problème? Le code n'est pas le meilleur, alors que devrais-je changer?
Merci beaucoup! WorldSignia
MyCode:
private string AddNewOrgBez()
{
try
{
SqlConnection sqlconn = new SqlConnection(this.connectionString);
SqlCommand cmd;
SqlDataReader reader;
sqlconn.Open();
cmd = new SqlCommand("SELECT * FROM dbo.mydata", sqlconn);
cmd.CommandTimeout = 0;
reader = cmd.ExecuteReader();
while (reader.Read())
{
// Felder holen
string okuerzel = reader["O_KURZ"].ToString();
string bezeichnung = reader["O_BEZ"].ToString();
string[] lines = CreateNewOrgBez(bezeichnung);
string sqlcmd = "UPDATE dbo.mydata SET WEB_OBEZ1 = '" + lines[0] + "', WEB_OBEZ2 = '" + lines[1] + "', WEB_OBEZ3 = '" + lines[2] + "' WHERE O_KURZ = '" + okuerzel + "'";
SqlConnection sqlconn2 = new SqlConnection(this.connectionString);
sqlconn2.Open();
SqlCommand cmd2 = new SqlCommand(sqlcmd, sqlconn2);
cmd2.CommandTimeout = 0;
cmd2.ExecuteNonQuery();
sqlconn2.Close();
}
reader.Close();
sqlconn.Close();
return "OK";
}
catch (Exception ex)
{
return ex.Message;
}
}
Vous ne pouvez pas créer sqlconn2 en dehors de la boucle? – pascal
Que fait 'CreateNewOrgBez'? Avez-vous vraiment besoin de ramener tout cela à votre application, puis mettez-la à jour par une ligne agonisante dans sa propre transaction? –
Une petite description: La fonction obtient un ensemble complet d'employés à partir d'une base de données et met à jour leur nom d'organisation. Les fonctions CreateNewOrgBez créent le nouveau nom sur un nom existant. Puis le nouveau nom qui est dans les lignes [] Array devrait être mis à jour aux champs WEB_OBEZ ... –