2008-11-01 10 views

Répondre

8

@Timothy Khouri: Cela peut être fait! EDIT: mais pas au niveau SQL!

Vous pouvez utiliser TableMappings sur le DataAdapter.

Si la commande SelectCommand d'un DataAdapter renvoie plusieurs ensembles de résultats, DataAdapter utilise des mappages de table pour remplir les DataTables correspondants dans un DataSet. Par défaut, le premier jeu de résultats sera rempli à un DataTable nommé « Table », et le second jeu de résultats sera rempli à un DataTable nommé « Tableau 1 », etc.

SqlDataAdapter sqlDa = new SqlDataAdapter(); 
SqlCommand selectCmd = new SqlCommand(); 
selectCmd.CommandText = "spReturnMultpileResultSets"; 
selectCmd.CommandType = CommandType.StoredProcedure; 
selectCmd.Connection = this.sqlConnection1; 
sqlDa.SelectCommand = selectCmd; 

// Add table mappings to the SqlDataAdapter 
sqlDa.TableMappings.Add("Table", "Customers"); 
sqlDa.TableMappings.Add("Table1", "Orders"); 

// DataSet1 is a strongly typed DataSet 
DataSet1 ds = new DataSet1(); 

this.sqlConnection1.Open(); 

sqlDa.Fill(ds); 

this.sqlConnection1.Close(); 

Réfs:

http://blogs.msdn.com/vsdata/archive/2007/03/08/tableadapter-multiple-result-sets.aspx http://www.eggheadcafe.com/software/aspnet/32696845/strongly-typed-datasets.aspx

+0

Excellente réponse, j'aurais dû clarifier ma réponse :) Vous pouvez toujours les renommer après (ou utiliser les mappages comme vous l'avez dit), mais vous sortez simplement de l'ordinal. Nous avons eu un problème où un sproc a appelé un autre sproc, et un dev a changé le second pour faire une sélection entre les deux! (crash) –

+0

@mitch C'est un peu bizarre que nous obtenions plusieurs ensembles de résultats sans explicabilité permettant [MARS] (http://msdn.microsoft.com/fr-fr/library/h32h3abf (v = vs.110) .aspx) - il n'est pas activé par défaut et cela fonctionne. Je sais parce que je le fais au travail (remplissage des ensembles de données) et nous n'avons pas activé mars. encore - comment ça marche sans mars activer? Pouvons-nous faire la lumière? –