SqlAdapter.Fill(DataSet)仅填充Xamarin中存储过程返回的第一个数据表

时间:2016-07-19 12:51:05

标签: xamarin sqldataadapter

我尝试使用SQLServer上的存储过程使用多个表填充我的数据集。代码很简单:

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

但不知何故Fill只创建(和填充)第一个表(而不是其他表)。它与程序无关,因为它返回正常数据。我错过了适配器中的东西吗?

1 个答案:

答案 0 :(得分: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)
             }
         }
    }
}