为什么要将datareader转成Datatable, 有什么好处?

mailto520 2008-10-22 10:26:33
请问:1、为什么要将datareader转成你Datatable, 有什么好处?
1、 以下net1.0里的一段源代码,转换时出错 行 39: myDataRow[i] = dataReader[i].ToString();


#region 将DataReader 转为 DataTable
/// <summary>
/// 将DataReader 转为 DataTable
/// </summary>
/// <param name="DataReader">DataReader</param>
public static DataTable ConvertDataReaderToDataTable(SqlDataReader dataReader)
{
DataTable datatable = new DataTable();
DataTable schemaTable = dataReader.GetSchemaTable();
//动态添加列
try
{

foreach (DataRow myRow in schemaTable.Rows)
{
DataColumn myDataColumn = new DataColumn();
myDataColumn.DataType = myRow.GetType();
myDataColumn.ColumnName = myRow[0].ToString();
datatable.Columns.Add(myDataColumn);
}
//添加数据
while (dataReader.Read())
{
DataRow myDataRow = datatable.NewRow();
for (int i = 0; i < schemaTable.Rows.Count; i++)
{
myDataRow[i] = dataReader[i].ToString();
}
datatable.Rows.Add(myDataRow);
myDataRow = null;
}
schemaTable = null;
dataReader.Close();
return datatable;
}
catch (Exception ex)
{
Error.Log(ex.ToString());
throw new Exception("转换出错出错!", ex);
}

}

#endregion
...全文
194 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
灬浪子灬 2011-08-31
  • 打赏
  • 举报
回复
使用datareader必须小心!
每次打开必须关闭!
magicbacon 2008-10-22
  • 打赏
  • 举报
回复
dataReader.GetValues(myDataRow[i]);
magicbacon 2008-10-22
  • 打赏
  • 举报
回复
datatable比datareader操作起来方便,数据绑定什么的。
greatverve 2008-10-22
  • 打赏
  • 举报
回复
datareader速度快,但是需要一直打开连接.
写代码的时候,还要考虑打开连接,关闭连接.
datatable比较简单,不用考虑这些.
我觉得如果数据量大,要求效率高,可能考虑用reader吧.
我一般用table.关于reader转化为table的代码,网上很多.
找个能用的.
zangchongbao 2008-10-22
  • 打赏
  • 举报
回复
最主要的去区别:SqlDataReader 需要打开数据链接,
而DataTable 不需要打开连接。
datareader只读,DataTable 可编辑
jiang_jiajia10 2008-10-22
  • 打赏
  • 举报
回复
SqlDataReader 读取速度快,占用内存小、需要打开数据链接,
DataTable 占用内存大,读取速度上没有SqlDataReader、它是不需要持续链接数据库。
ppp7p 2008-10-22
  • 打赏
  • 举报
回复
SqlDataReader 读取速度快,占用内存小、需要打开数据链接,
DataTable 占用内存大,读取速度上没有SqlDataReader、它是不需要持续链接数据库。
各有优点,所以要综合来使用。
wfyfngu 2008-10-22
  • 打赏
  • 举报
回复
[Quote=引用楼主 mailto520 的帖子:]
请问:1、为什么要将datareader转成你Datatable, 有什么好处?
[/Quote]

没有任何好处,建议不要使用DataSet和DataTable
可以使用DataReader和强类型数据集合替代DataTable的使用
而且不会丧失DataTable作为数据库绑定到控件的便利性。
lizhimin0310 2008-10-22
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 cteddy 的回复:]
引用 4 楼 qinhl99 的回复:
1、为什么要将datareader转成你Datatable, 有什么好处?
//操作起来方便,另外,它是无连接的啊

还有坏处啊
就是占用服务器内存啊
[/Quote]
d
cteddy 2008-10-22
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 qinhl99 的回复:]
1、为什么要将datareader转成你Datatable, 有什么好处?
//操作起来方便,另外,它是无连接的啊
[/Quote]
还有坏处啊
就是占用服务器内存啊
qinhl99 2008-10-22
  • 打赏
  • 举报
回复
1、为什么要将datareader转成你Datatable, 有什么好处?
//操作起来方便,另外,它是无连接的啊

62,039

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧