2016-07-19 3 views
0

SQLServerのストアドプロシージャを使用して複数のテーブルでデータセットを埋めようとしています。コードは単純です:SqlAdapter.Fill(DataSet)は、Xamarinのストアドプロシージャによって返された最初のデータテーブルのみを埋め込みます。

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

何とかのみ作成(塗りつぶし)を記入最初のテーブル(ないなど)。正常なデータを返すのでプロシージャではありません。私はアダプタで何かを見逃していますか?

答えて

0

Fillが動作しない理由はまだ分かりません。それは前に働いた。あなたのデータテーブルを特定する必要はありませんが、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) 
      } 
     } 
    } 
} 
関連する問題