我尝试使用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只创建(和填充)第一个表(而不是其他表)。它与程序无关,因为它返回正常数据。我错过了适配器中的东西吗?
答案 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)
}
}
}
}