9.6 SqlDataReader对象
ADO.NET中提供了SqlDataReader对象,该对象用于从数据库中读取数据。在使用SqlDataReader对象读取数据时,必须要与数据库保持连接,断开连接后不能再读取数据。
9.6.1 创建SqlDataReader对象
SqlDataReader对象读取数据库表中的数据时,数据连接必须处于打开状态,而且每次从查询结果中读取一行数据到内存中。使用SqlDataReader对象时,需要注意以下几点。
(1)SqlDataReader只能读取数据,不能对数据库执行任何修改或者插入操作。
(2)SqlDataReader只能向前读取数据,不能回头读取已经被访问的数据。
(3)SqlDataReader对象直接把数据传递到其他对象或窗体页面。
直接通过SqlCommand对象的ExecuteReader()方法可以创建SqlDataReader对象,代码如下。
SqlDataReader dr = command.ExecuteReader();
9.6.2 SqlDataReader对象的属性
调用SqlDataReader对象的属性可以获取当前行中的列数、当前行的嵌套深度,如表9-8所示的对SqlDataReader对象的常用属性的说明。
表9-8 SqlDataReader对象的常用属性
【范例9】
HasRows属性返回一个布尔值,使用代码如下。
if (dr.HasRows) { //如果包含行 }
9.6.3 SqlDataReader对象的方法
SqlDataReader对象还提供了一系列的方法,常用方法的说明如下。
(1)Close()方法:关闭SqlDataReader对象,释放资源。
(2)Read()方法:返回一个布尔值,使用SqlDataReader指针前进到下一条记录,如果前进成功则返回true,否则返回false。
(3)isDBNull()方法:获取一个值,该值指示列中是否包含不存在的或缺少的值。
【范例10】
通过Read()方法读取数据,在读取数据的过程中,并不能保证读取的字段中都有数据,因此,可以通过DBNull对象的Value属性判断。代码如下。
if(read["st_brithday"] == DBNull.Value) { //数据为空时的代码 }