VB.NET学习笔记:ADO.NET操作ACCESS数据库——使用OleDbDataReader对象
OleDbDataReader类提供从数据源读取数据行的只进流的方法。 此类不能被继承。也就是说我们只能通过它读取数据而不能修改数据且读取记录的游标只会不断前进,每次只能读取一行,可以减少系统开销,所以高效。
示例代码:
'连接数据库Dim conn As New OleDb.OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=F:\test.accdb")'打开数据库conn.Open()'生成命令Dim cmd As New OleDbCommand("SELECT ID,stuname FROM studenttbl", conn)'执行命令Dim reader As OleDbDataReader '声明OleDbDataReader对象reader = cmd.ExecuteReader() '实例OleDbDataReader对象,注意不能用NewDim Strreader As String = ""While reader.Read() '读取数据For i = 0 To reader.FieldCount - 1If reader.IsDBNull(i) = False ThenStrreader &= reader(i).ToString & " "End IfNextStrreader &= Environment.NewLineEnd WhileIf Not reader.IsClosed Thenreader.Close() '关闭OleDbDataReader对象End If'关闭数据库conn.Close()
代码解读:
1、若要创建OleDbDataReader,必须调用OleDbCommand对象的ExecuteReader方法,而不是直接使用构造函数。试图用New关键字实例化OleDbDataReader会发生错误。
OleDbCommand对象的ExecuteReader方法有无参数和带参数2个重载版本,可以按需要选择。如:
reader = cmd.ExecuteReader(CommandBehavior.CloseConnection)
这里的参数表示当关闭reader的时候同时关闭数据库连接,也就是说可以省略conn.Close()这句代码,系统会自动调用这个方法来关闭conn。
2、使用OleDbDataReader的Read方法前进到下一条记录,若返回True则表示有下一条记录。
以上代码使用OleDbDataReader对象的Item[Int32]属性通过给定列序号来读取数据,也可以使用Item[String]属性通过给定列名称来读取数据,如:
While reader.Read() '读取数据Strreader &= reader("ID").ToString & " " & reader("stuname") & Environment.NewLineEnd While
如果已事先知道返回的各列的数据类型,可以使用OleDbDataReader对象的一系列方法(GetString、GetInt32等)来读取数据,可以减少在获取列值时所需的大量类型转换。如:
Strreader &= reader.GetInt32(0).ToString & " " & reader.GetString(1) & Environment.NewLine
还可以使用OleDbDataReader对象的GetValues方法把当前行的列值用来填充对象数组,一次性读取一行的数据。如:
Dim Strreader As String = ""Dim arr() As ObjectWhile reader.Read() '读取数据ReDim arr(reader.FieldCount - 1)reader.GetValues(arr)Strreader &= String.Join(",", arr) & Environment.NewLineEnd While
还可以使用DataTable对象的Load方法将OleDbDataReader对象的数据加载到DataTable中。
Dim dt As New DataTable
dt.Load(reader)
3、OleDbDataReader对象处于打开状态时会占用连接,也就是说数据库必须处于打开状态。一旦用完应该马上关闭OleDbDataReader,然后才能关闭OleDbConnection。
4、可能还会用到OleDbDataReader对象的一些方法,如:
GetDataTypeName(col) :获取序号为col的列的来源数据类型名
GetFieldType(col) :获取序号为col的列的数据类型,一般显示会是System.**
GetName(col): 获取序号为col的列的字段名
GetOrdinal(name) :获取字段名为name的列的序号
VB.NET学习笔记:ADO.NET操作ACCESS数据库——使用OleDbDataReader对象相关推荐
- VB.NET学习笔记:ADO.NET操作ACCESS数据库——ADO.NET数据访问接口
一.ADO.NET概述 Ado.net基于XML和离线计算模型. ADO.net的两个核心组件:.Net数据提供程序.DataSet. .net数据提供程序用来与数据库的连接,如SQLServer.n ...
- 【PHP+MySQL学习笔记】php操作MySQL数据库中语句
我们常常用conn.php文件来建立与数据库的链接,然后在所需的文件中利用include 进行调用.这样有效防止对数据库属性的改动 而引起其他有关文件对数据调用的错误. 现在来看一个conn.php文 ...
- VB.NET学习笔记:ADO.NET操作ACCESS数据库——OleDbDataAdapter的Update方法更新数据库的秘密(行状态RowState和行版本 DataRowVersion)
在<数据集DataSet数据管理(DataAdapter查询更新数据库)>一文中提到可以使用OleDbDataAdapter对象的Update方法还可将对 DataSet 所做的更改解析回 ...
- golang 执行sql语句_Go语言学习笔记(Golang操作MySQL数据库)
GO连接MySQL 通过GO页面作为客户端访问数据库 1.因为GO语言没有提供任何官方数据库驱动,所以需要安装第三方函数库. 2.由于在github上安装,所以需要安装git软件,安装过程一直点击下一 ...
- 直接通过ADO操作Access数据库(修改版)
自身的OLE DB Privider,而且还可以应用所有的ODBC驱动程序.关于OLE DB和ADO的其它详细情况,读者可以自行查阅相关书籍或MSDN,这里就不一一说明了.让我们直接步入主题:如何掌握 ...
- 学习记录:VB.NET.操作ACCESS数据库
从98年到现在,VB6使用了20多年,真的舍不得扔掉,但是随着新计算机预装操作系统的版本越来越高,做好的安装包在安装时遇到的问题越来越多,无奈之下只能转向使用VB.NET了.安装了VS2005来学习, ...
- tensorflow学习笔记——使用TensorFlow操作MNIST数据(1)
续集请点击我:tensorflow学习笔记--使用TensorFlow操作MNIST数据(2) 本节开始学习使用tensorflow教程,当然从最简单的MNIST开始.这怎么说呢,就好比编程入门有He ...
- jQuery学习笔记之DOM操作、事件绑定(2)
jQuery学习笔记之DOM操作.事件绑定(2) --------------------学习目录------------------------ 4.DOM操作 5.事件绑定 源码地址: https ...
- VB.NET 使用 OleDb 操作 Access 数据库(来自 MSDN)
VB.NET 使用 OleDb 操作 Access 数据库 这里采用 OleDb 方式对 Access 数据库进行访问,主要内容都来自 MSDN 帮助文档.建议新手注意 MSDN 的用途.下面的代码只 ...
最新文章
- 常用的CSS命名规则
- Redis的安装、配置 --转载
- buu [AFCTF2018]Morse
- 阅读作业:大泥球、敏捷、人件
- 二、CSS知识总结(上篇)
- tomcat闪退没有报错_Appium在Android平台几种常见报错的解决方案
- 前端每日实战:56# 视频演示如何用纯 CSS 描述程序员的生活
- 02.Teams组成概述及使用分享
- C语言性能优化书籍,Android应用性能优化 (埃尔韦) 中文PDF扫描版
- mysql忘记了密码、允许远程连接、mysql卸载 -- linux
- Android中Activity出现与退出的自定义动画
- VMware公司中文命名挑战赛
- python3 写入excel_python3读取、写入、追加写入excel文件
- 离线打开html一直刷新,还在手动刷新离线网页?这个方法让你坐等网络恢复
- vmware 14 激活码
- StretchDIBits使用方法
- Windows添加系统桌面常用图标
- java整数类和自然数类的简单实现
- html5相册制作成视频,怎么把照片制作成视频,视频相册制作免费软件|特效多多...
- [SLAM]激光SLAM初学者代码及论文推荐【转】