A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 胡盼盼 中级黑马   /  2013-9-3 10:55  /  2338 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

DataReader和DataSet操作数据库的时候使用,具体有什么区别,求详细

4 个回复

倒序浏览
1. DataReader对象是读取数据源的数据,只能将数据源的数据从头到尾依次读出,Sql server7.0或以上版本使用SqlDataReader,Oledb数据源使用OledbReader;
2. 数据集DataSet包含若干表DataTable, DataTable包含若干行 DataRow;
3. foreach(DataRow row in dataset.Tables[0].Rows) row["Name"]。
回复 使用道具 举报
SqlDataReader render = cmd.ExecuteReader();
while(reader.Read())
{
Console.WriteLine(reader.GetString(1));
}


  • 查询结果是放到数据库中,如果数据库服务器是单独的机器,则数据还没有到客户端,不占本地电脑内存.在服务器端有一个类似指针的东西,数据库那边先把结果放到一个地方,接着用指针指向查询结果的第一条数据之前(初始的时候指针没有指向任何一条数据)没调用一次Read指针就往下挪一格,只要它没有挪到最后一条数据之后那么它的返回值就是true,如果挪到了最后一条数据之后,则返回值就是false.
  • SqlDataReader对于小数据量的数据来说带来的只有麻烦.ADO.Net中提供了数据集的机制,将查询结果填充到本地内存中,这样连接断开,服务器断开都不影响数据的读取.数据库的好处是降低数据库服务器压力,编程也简单.
DataSet dataset = new DataSet();
SqlDataAdapter adapter = new SqlDataAdapter(cmd);
adapter.Fill(dataset);
  • DataSet包含若干表DataTable, DataTable包含若干行DataRow.

          Foreach(DataRow row in dataset.Tables[0].Rows) row[“Name”].

评分

参与人数 1技术分 +1 收起 理由
赵宗荣 + 1

查看全部评分

回复 使用道具 举报 1 0
彭家贰小姐 发表于 2013-9-3 11:59
SqlDataReader render = cmd.ExecuteReader();
while(reader.Read())
{

{:soso_e163:}O(∩_∩)O谢谢
回复 使用道具 举报
许庭洲 发表于 2013-9-3 11:05
1. DataReader对象是读取数据源的数据,只能将数据源的数据从头到尾依次读出,Sql server7.0或以上版本使用 ...

O(∩_∩)O谢谢
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马