J'ai une liste de chaînes qui ne sont que des numéros de facture. J'énumère à travers cette liste pour obtenir les détails de chaque facture de la base de données. Cette liste peut facilement avoir une taille de 700 à 1000. la façon dont je le fais maintenant conduit à 700-1000 connexions à la base de données. cela prend trop de temps à compléter Y at-il une meilleure façon de le faire que je ne sais pas? Tout pointeur serait génial.aider à réduire le nombre de connexions à la base de données
ici est un exemple de mon énumération
foreach(string i in invoiceList)
{
Invoice inv = invoiceData.GetInvoice(i);
//do something with the invoice
}
puis est ici un exemple de ma méthode d'accès aux données en utilisant ADO.NET
public Invoice GetInvoice(string invoice)
{
SqlConnection con = new SqlConnection(//connection string);
SqlCommand cmd = new SqlCommand("dbo.getInvoices", con);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("invoice", SqlDbType.VarChar).Value = invoice;
SqlDataReader dr;
Invoice inv = new Invoice();
try{
con.Open();
dr = cmd.ExecuteReader
while(dr.read())
{
//assign values from the database fields
}
}
catch{}
finally{con.close();}
}
donc essentiellement la méthode getInvoice est appelée 1000 fois l'ouverture d'un nouvelle connexion à chaque fois. Quelle est la meilleure façon (plus rapide) de faire cela? Merci!
Encore mieux: Collectez toutes les factures et placez-les dans une instruction SQL IN. Ce code est horrible en termes de performances. – flq
"Ce code est horrible en termes de performances" --- vous me dites! :) J'ai pensé à faire cela, mais je ne savais pas si c'était sage ou si je pouvais essayer. merci – twal
Ne demandez pas de ** pointeurs **. Ce n'est peut-être pas ce que vous cherchez. :) –