2010-08-07 3 views
0

Я заполняю данные дважды,Набор данных только один стол

имя таблицы никогда не устанавливается правильно. Я вижу только одну таблицу в DataSet

Что такое шансы?

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); 
     } 

благодаря

+1

Не могли бы вы высказать свой код. Возможно, есть разница между вашим кодом и примером. В этом примере может быть ошибка. Кроме того, ссылка, которую вы опубликовали, не работает для меня. – funkymushroom

+0

в отладчике, попробуйте dataset.tables.count и ссылка не работает. – SoftwareGeek

ответ

2

Вызывающим .Нанести() на наборе данных будет повторно загрузить его, а не загружать новые результаты в другую таблицу. Вместо этого вызовите .Fill() в таблице в наборе данных. Вы можете попробовать что-то вроде этого:

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

Пример, предоставленный MS, был неправильным, я ненавижу свой MoM – Costa

+0

@Costa: В каком примере вы использовали? (и что такое MoM?) – abatishchev

+0

Вот! Сила ясновидения! Я должен начать свою церковь сейчас! Демоны OUT! –

Смежные вопросы