DataSet和DataReader

查询结果小数据量时用DataSet,大数据量时用DataReader。

【1】DataReader中的查询结果并不是放到程序中的,而是放在数据库服务器中,SqlDataReader只是相当于放了一个指针(游标),只能读取当前游标指向的行,一旦连接断开就不能再读取。这样做的好处就是无论查询结果有多少条,对程序占用的内存都几乎没有影响。SqlDataReader对于小数据量的数据来说带来的只有麻烦,优点可以忽略不计。

(1)DataReader方法一般使用while循环。reader方法,如果读到下一行数据,则返回true;并且reader本身就等于哪一行数据的值。否则false。

【2】DataSet将查询结果填充到本地内存中,这样连接断开、服务器断开都不影响数据的读取。

(2)SqlDataAdapter是DataSet和数据库之间沟通的桥梁。数据集DataSet包含若干表DataTable,DataTable包含若干行DataRow。foreach
(DataRow row in dataset.Tables[0].Rows)------------ row["Name"]。

DataSet dataset = new DataSet();
SqlDataAdapter adapter = new SqlDataAdapter(cmd);//SqlDataAdapter不需要手动的打开和关闭链接通道
adapter.Fill(dataset);

DataSet和DataReader

时间: 2024-12-17 06:25:14

DataSet和DataReader的相关文章

判断dataset和datareader中是否存在某列

//判断dataset中是否存在某列 ds.Tables[0].Columns.Contains("a"); //判断datareader中是否存在某列 dr.GetSchemaTable().Select("ColumnName='a'").Length>0

DataReader 和 DataSet 的区别

摘自:http://www.cnblogs.com/zhjjNo1/archive/2009/08/26/1554420.html 第一种解释 DataReader和DataSet最大的区别在于,DataReader使用时始终占用SqlConnection(俗称:非断开式连接),在线操作数据库时,任何对SqlConnection的操作都会引发DataReader的异常.因为DataReader每次只在内存中加载一条数据,所以占用的内存是很小的.由于DataReader的特殊性和高性能,所以Dat

DataReader和DataSet区别

第一种解释 DataReader和DataSet最大的区别在于,DataReader使用时始终占用SqlConnection(俗称:非断开式连接),在线操作数据库时,任何对SqlConnection的操作都会引发DataReader的异常.因为DataReader每次只在内存中加载一条数据,所以占用的内存是很小的.由于DataReader的特殊性和高性能,所以DataReader是只进的,你读了第一条后就不能再去读取第一条了. DataSet则是将数据一次性加载在内存中,抛弃数据库连接(俗称:断

DataReader和DataSet的异同之处。

ADO.NET2.0提供了两个用于检索关系数据的对象:DataSet和DataReader.并且这两个对象都可以将检索的关系数据存储在内存中.在软件开发过程中经常用到这两个控件,由于这两个控件在使用和功能方面的相似,很多程序员错误地认为DataSet和DataReader是可以相互替代的.这种想法是错误的,在这我们分析一下DataSet控件和DataReader控件的区别. ■ 与数据库连接DatSet 连接数据库时是非面向连接的.把表全部读到Sql中的缓冲池,并断开于数据库的连接.Datare

vb.net访问sql server数据库(SqlDataReader和DataSet两种方式)

.net访问数据库的三个基本步骤: 一.连接数据库: 要使用sqlclient命名空间中的sqlconnection类: 定义一个sqlconnection对象: Dim sqlCon As New SqlConnection 要进行的设置有: 1.sqlCon .ConnectionString="server=服务器ip;database=数据库名称;integrated security=ture/false(是否有登录账号密码);uid=用户名 (默认:sa);pwd:登录密码"

Ado.net 三[SQL注入,DataAdapter,sqlParameter,DataSet]

1.SQL注入:SQL注入攻击是web应用程序的一种安全漏洞,可以将不安全的数据提交给运用程序,使应用程序在服务器上执行不安全的sql命令.使用该攻击可以轻松的登录运用程序. 例如:该管理员账号密码为xiexun,该sql的正确语句应该为: select * from Users where userName='xiexun' 如果在没有做任何处理的情况下,在登录名文本框中输入(xuxian' delete users--),单击"登录"按钮之后,相当于传了两句sql语句,一句执行查询

[转] DataReader 不奇怪,该出手时就出手!

刚看到一篇文章:[原]关于使用DataReader的一个很奇怪的问题,不应该用DataReader? 于是准备花点时间解答下,顺便为这个月增添一篇文章. 关于DataReader,以前写过一篇文章,可参考:DataReader 链接关闭解惑篇 下面将对原文,解答两个问题: 一: DataReader.DataTable.DataSet 的简单关系: 这里先取原文的第一句话:.net 读取数据集有两种方式:DataSet 和 DataReader 解答:.net 的 Command 操作里,默认可

DataRead和DataSet的异同

第一种解释 DataReader和DataSet最大的区别在于,DataReader使用时始终占用SqlConnection(俗称:非断开式连接),在线操作数据库时,任何对SqlConnection的操作都会引发DataReader的异常.因为DataReader每次只在内存中加载一条数据,所以占用的内存是很小的.由于DataReader的特殊性和高性能,所以DataReader是只进的,你读了第一条后就不能再去读取第一条了.DataSet则是将数据一次性加载在内存中,抛弃数据库连接(俗称:断开

C#面试-总结

1.override,overload的区别(鲁班联盟面试题) 笔试场景: 当时写反了区别 正确答案: override(重写,覆盖) 1.方法名.参数.返回值相同. 2.子类方法不能缩小父类方法的访问权限. 3.子类方法不能抛出比父类方法更多的异常(但子类方法可以不抛出异常). 4.存在于父类和子类之间. 5.方法被定义为final不能被重写. overload(重载,过载) 1.参数类型.个数.顺序至少有一个不相同. 2.不能重载只有返回值不同的方法名. 3.存在于父类和子类.同类中. 方法