2016-07-19 13 views
0

Ich versuche, meine Datenmenge mit mehreren Tabellen unter Verwendung der gespeicherten Prozedur auf SQLServer zu füllen. Der Code ist einfach:SqlAdapter.Fill (DataSet) füllt nur die erste Datentabelle, die von der gespeicherten Prozedur in Xamarin zurückgegeben wird

var execProcedureString = "EXEC dbo.SomeProcedure ..." 
var myDataSet = new DataSet(); 
using (var conn = new SqlConnection(connectionString)) 
{ 
    using (var command = new SqlCommand(execProcedureString, conn)) 
    { 
     using (var adapter = new SqlDataAdapter(command)) 
     { 
      adapter.Fill(myDataSet); 
     } 
    } 
} 

Aber irgendwie füllt nur füllt (und füllt) erste Tabelle (nicht die anderen). Es handelt sich nicht um eine Prozedur, da sie normale Daten zurückgibt. Fehle ich etwas im Adapter?

Antwort

0

Ich weiß immer noch nicht, warum Fill nicht funktioniert. Es hat vorher funktioniert. Es gibt einen Umweg (ohne Notwendigkeit, Ihre Daten zu spezifizieren), aber es enveloped SqlDataReader

var execProcedureString = "EXEC dbo.SomeProcedure ..." 
var myDataSet = new DataSet(); 

using (var conn = new SqlConnection(connectionString)) 
{ 
    using (var command = new SqlCommand(execProcedureString, conn)) 
    { 
     conn.Open(); 
     using (var reader = new command.ExecuteReader()) 
     { 
      while(!reader.IsClosed) //table.Load closes reader if it contains no more rows 
      { 
       var table = new DataTable(); 
       myDataset.Tables.Add(table); 
       table.Load(reader) 
      } 
     } 
    } 
} 
Verwandte Themen