ODP.NET 读取大小示例
Table of Contents
本示例程序旨在展示如何控制 OracleDataReader 的 FetchSize 属性。它也展示了如何使用 ODP.NET 的 OracleDataReader 类来填充 DataGrid 控件。
Oracle Data Provider for .NET (ODP.NET) 是 Oracle 数据库数据供应程序的一个实现。ODP.NET 使用 Oracle 本地 API 为任何 .NET 应用程序提供对 Oracle 数据和特性的快速而且可靠的访问。ODP.NET 在 Oracle.DataAccesss.dll 部件中提供。
OracleDataReader 对象提供一个只能正向传输的、只读的、位于内存的结果集。与 DataSet 不同,OracleDataReader 保持连接并读取数据。OracleDataReader 类有一个叫做 FetchSize 的属性。这个属性以字节为单位指定 OracleDataReader 对象用于读取数据的内存大小。因此,根据用户在一次数据库访问中希望读取的行数,他们可以为这个属性设置合适的值。如果 FetchSize 被设置为零,那么不读取任何行。在任何有意义的操作中,这个值必须等于 RowSize 或者是它的整数倍。RowSize 是 OracleCommand 对象的属性。调用了 OracleCommand 对象的 ExecuteReader() 方法后 ,这个属性被设置为从数据库读取一行所需要的字节数。一旦用户获取了这个值,他们就能用下面的公式计算所需的读取大小:FetchSize = RowSize * 每次数据库访问读取的行数.用户在从 OracleDataReader 对象中读取任何行之前必须先将 FetchSize 属性设置为该值。
这个程序还展示了如何从 OracleDataReader 动态地创建一个 DataTable,然后用它来填充一个 DataGrid 控件。
运行此示例程序时,用户需要提供用户名、密码和连接字符串来连接到数据库。点击 "Connect" 按钮进行连接。应用程序创建设置此程序所需的表。一旦该表构造完成,"Number of Rows..." 文本框将被激活。您可以编辑这个字段并输入您选择的任何数字。这个数字应该是正数,并且大于 1 小于 1000。这个限制是由应用程序强制执行的,因为表中有 1000 行。您可以按下 "Populate Grid" 按钮来填充 DataGrid。可以改变想读取的行数并填充 DataGrid。您会发现随着 FetchSize(每次访问数据库读取的行数)的减少,填充 DataGrid 的时间在增加。

Figure 1.1:主屏幕的屏幕截图
-
与 MS 开发环境 7.0 版 (MS Visual Studio .NET) 一起安装的 VB.NET,包括 MS .NET Framework 1.0 版
-
运行 SQL*Net TCP/IP 监听程序(可以在此下载)的 Oracle9i 数据库或更新版本
-
Oracle Data Provider for .NET (ODP.NET)(可以在此下载)
使用 Winzip 或者命令行工具把 FetchSize.zip 解压缩到您指定的一个目录,用<Extract_Dir> 来指代此目录。解压缩此 zip 文件后会产生 'FetchSize' 目录。更多详细信息请参阅示例文件的说明部分。
不需要进行特殊的数据库设置。当此程序启动时,它将创建所需的表 'PRODUCTTAB' 并插入必要的数据。确保数据库用户拥有必要的权限进行撤消、创建和更新表的操作。
1. 使用 Visual Studio .NET 从 \FetchSize 文件夹打开FetchSize.sln。
2. 确保下列 .NET 组件引用已经被添加到 FetchSize工程: Oracle.DataAccess System System.Data System.Drawing System.Windows.Forms
要添加对上面的 .NET 组件的引用: a) 进入 Menu ->View-> Solution Explorer。 b) 用鼠标右键点击 FetchSize 工程,选择 'Add Reference'。 c) 从出现的列表中选择上面的 .NET 组件。 d) 点击 'Select',然后点击 OK。 e) 选中的 .NET 组件被添加到工程。
4. 编译并运行示例。
- 当出现图 1.1 中所示的应用程序主表单后,按照您的数据库设置输入用户名、密码和连接字符串并按下 "Connect" 按钮。等待表的创建和数据插入完成。完成后,"Number of Rows.." 文本控件将会被激活。
- 您可以改变读取的行数,然后按下 "Populate Grid" 按钮读取数据。填充
DataGrid 所需的时间会在底部显示。
- 您可以在 1 到 1000 之间更改每次访问读取的行数,并填充 DataGrid,您可以看到随着
FetchSize(每次访问数据库读取的行数)的减少,填充 DataGrid 所需时间在增加。(最大行数被限制为 1000 是因为在表中有 1000 行)
注意:用来执行此应用程序的数据库用户必须具有创建、删除和修改表所必需的权限。
下面是 FetchSize.zip 的目录结构:
| 目录 |
文件名 |
说明 |
FetchSize\doc |
Readme.html |
本文件 |
| otn.css |
Readme.html 中使用的样式表 |
FetchSize\doc\images |
*.jpg |
此文件夹中包含 Readme.html 文件中使用的图像 |
FetchSize\ |
FetchSize.sln |
Visual Studio 解决方案 |
| FetchSize.suo |
解决方案用户选项(在创建 Visual Studio 解决方案时自动生成此文件)。 |
FetchSize\src\FetchSize\ |
AssemblyInfo.vb |
此文件存储有关生成的部件的信息 |
| DBAccess.vb |
此文件包含访问数据库的代码 |
| FetchSizeForm.vb |
此应用程序的主窗口 |
| FetchSizeForm.vbproj.* |
Visual Studio 工程文件(在创建 Visual Studio 工程时自动生成这些文件) |
| *.resx |
.NET XML 资源模板(在创建 Visual Studio 工程时自动生成此文件) |
|