Dans mon application Winform, j'ai le scénario suivant:
Je veux obtenir plusieurs tables sur un seul événement. Renvoyer toutes les tables sous la forme dataset
dans single server cycle,
ou obtenir une table à la fois et utiliser separate server cycle for each table
quel est le meilleur? Quels sont les avantages les uns par rapport aux autres?
La façon normale est de tout faire en même temps.
construisez simplement vos SELECT
et vous aurez un DataSet
rempli de toutes les tables.
using (System.Data.SqlClient.SqlConnection conn = new System.Data.SqlClient.SqlConnection(myConnString))
{
using (System.Data.SqlClient.SqlCommand cmd = new System.Data.SqlClient.SqlCommand())
{
cmd.CommandText = "myMultipleTablesSP";
cmd.Connection = conn;
cmd.CommandType = CommandType.StoredProcedure;
conn.Open();
System.Data.SqlClient.SqlDataAdapter adapter = new System.Data.SqlClient.SqlDataAdapter(cmd);
DataSet ds = new DataSet();
adapter.Fill(ds);
conn.Close();
}
}
si par exemple vous retournez 2 tables dans votre SP, comme:
SELECT * FROM [TableA];
SELECT * FROM [TableB];
vous accéderiez à ces tables en tant que:
DataTable tableA = ds.Tables[0];
DataTable tableB = ds.Tables[1];
Si vous chargez chaque table séparément et utilisez des threads, vous pouvez considérablement améliorer les performances.
Les jeux de données sont également très lourds ... essayez donc de les éviter si possible.