ODP.NET 读取大小示例

Table of Contents

示例应用程序目标

返回页首

本示例程序旨在展示如何控制 OracleDataReaderFetchSize 属性。它也展示了如何使用 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 或者是它的整数倍。RowSizeOracleCommand 对象的属性。调用了 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.1 中所示的应用程序主表单后,按照您的数据库设置输入用户名、密码和连接字符串并按下 "Connect" 按钮。等待表的创建和数据插入完成。完成后,"Number of Rows.." 文本控件将会被激活。
  2. 您可以改变读取的行数,然后按下 "Populate Grid" 按钮读取数据。填充 DataGrid 所需的时间会在底部显示。
  3. 您可以在 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 工程时自动生成此文件)
寄送此页面
Printer View 打印机视图