2010-08-07 4 views
0

Je remplis le jeu de données deux fois,L'ensemble de données contient une seule table

le nom de la table n'a jamais été défini correctement. Je ne vois qu'une seule table dans le DataSet

Qu'est-ce que les chances?

public static DataSet GetSchoolTree() 
     { 
      BLLBase.CreateConnection(); 
      BLLBase.Connection.Open(); 

      DataSet dataSet = new DataSet("SS"); 


      Stages.GetStages(ref dataSet); 
      Schools.GetSchools(ref dataSet); 

      BLLBase.Connection.Close(); 

      dataSet.Relations.Add(dataSet.Tables["Schools"].Columns["ID"], dataSet.Tables["dbo.Stages"].Columns["School_ID"]); 

      return dataSet; 
     } 

internal static void GetSchools(ref DataSet dataSet) 
     { 
      SqlDataAdapter adapter = new SqlDataAdapter(); 
      adapter.TableMappings.Add("dbo.Schools", "Schools"); 

      SqlCommand command = new SqlCommand(); 
      command.CommandText = "[dbo].[SR_School_ALL]"; 
      command.CommandType = System.Data.CommandType.StoredProcedure; 
      command.Connection = BLLBase.Connection; 
      adapter.SelectCommand = command; 

      adapter.Fill(dataSet); 
     } 

internal static void GetStages(ref DataSet dataSet) 
     { 
      SqlDataAdapter adapter = new SqlDataAdapter(); 
      adapter.TableMappings.Add("dbo.Stages", "Stages"); 

      SqlCommand command = new SqlCommand(); 
      command.CommandText = "[dbo].[Stp_Stages_All]"; 
      command.CommandType = System.Data.CommandType.StoredProcedure; 
      command.Connection = BLLBase.Connection; 
      adapter.SelectCommand = command; 

      adapter.Fill(dataSet); 
     } 

grâce

+1

Pourriez-vous s'il vous plaît signaler votre code. Il y a peut-être une différence entre votre code et l'exemple. Il pourrait juste y avoir un bug dans l'exemple. De plus, le lien que vous avez posté ne fonctionne pas pour moi. – funkymushroom

+0

dans le débogueur, essayez dataset.tables.count & le lien ne fonctionne pas. – SoftwareGeek

Répondre

2

Appel .Remplir() sur un ensemble de données ré-charger, pas charger de nouveaux résultats dans une autre table. Appelez plutôt .Fill() sur une table dans l'ensemble de données. Vous voudrez peut-être essayer quelque chose comme:

var ds = new DataSet(); 
ds.Tables.Add(new DataTable("first")); 
adapter1.Fill(ds.Tables["first"]); 
ds.Tables.Add(new DataTable("second")); 
adapter2.Fill(ds.Tables["second"]); 
+0

L'exemple fourni par MS n'était pas correct, je déteste mon MoM – Costa

+0

@Costa: Quel exemple avez-vous utilisé? (et qu'est-ce que MoM?) – abatishchev

+0

Voici! Le pouvoir de la clairvoyance! Je devrais commencer ma propre église maintenant! Démons OUT! –

Questions connexes