【发布时间】:2012-07-05 22:36:29
【问题描述】:
我正在尝试填充包含 2 个具有一对多关系的表的 DataSet。 我正在使用 DataReader 来实现这一点:
public DataSet SelectOne(int id)
{
DataSet result = new DataSet();
using (DbCommand command = Connection.CreateCommand())
{
command.CommandText = "select * from table1";
var param = ParametersBuilder.CreateByKey(command, "ID", id, null);
command.Parameters.Add(param);
Connection.Open();
using (DbDataReader reader = command.ExecuteReader())
{
result.MainTable.Load(reader);
}
Connection.Close();
}
return result;
}
但是我只有一张桌子坐满了。如何实现我的目标 - 填写两个表格?
如果可能的话,我想使用 DataReader 而不是 DataAdapter。
【问题讨论】:
-
为什么你会期望两个表都被填满?您的命令仅包含一个返回单个表的
select语句。 -
为什么不使用
SqlDataAdapter及其Fill(...)方法而不是DbCommand? -
@Nikola Anusev - 我知道,所以我只是提出任何建议
-
@jonnyGold - 预演。 DataReader 快,DataAdapter 慢。这对我来说至关重要
-
@AndriyZakharko:DataAdapter 在后台也使用了 DataReader。 stackoverflow.com/a/334667/284240 reader 的唯一优势是您可以一次将一条记录流式传输,而不是将所有记录加载到内存中。
标签: c# sql ado.net dataset datareader