SqlAdapter.Fill(DataSet) 仅填充 Xamarin 中存储过程返回的第一个数据表
SqlAdapter.Fill(DataSet) fills only first datatable returned by stored procedure in Xamarin
我尝试使用 SQLServer 上的存储过程用多个 table 填充我的数据集。代码很简单:
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 只先创建(和填充)table(而不是其他)。它与程序无关,因为它 returns 正常数据。我在适配器中遗漏了什么吗?
我仍然不知道为什么 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)
}
}
}
}
我尝试使用 SQLServer 上的存储过程用多个 table 填充我的数据集。代码很简单:
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 只先创建(和填充)table(而不是其他)。它与程序无关,因为它 returns 正常数据。我在适配器中遗漏了什么吗?
我仍然不知道为什么 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)
}
}
}
}