适用于 Oracle 的 .NET Framework 数据提供程序的系统要求

用于 Oracle 的 .NET Framework 数据提供程序需要Microsoft数据访问组件 (MDAC) 2.6 或更高版本。 建议使用 MDAC 2.8 SP1。

还必须安装 Oracle 8i 版本 3 (8.1.7) 客户端或更高版本。

Oracle 9i 之前的 Oracle 客户端软件无法访问 UTF16 数据库,因为 UTF16 是 Oracle 9i 中的新功能。 若要使用此功能,必须将客户端软件升级到 Oracle 9i 或更高版本。

使用 Oracle 数据提供程序和 Unicode 数据

下面是使用适用于 Oracle 和 Oracle 客户端库的 .NET Framework 数据提供程序时应考虑的 Unicode 相关问题的列表。 有关详细信息,请参阅 Oracle 文档。

在连接字符串属性中设置 Unicode 值

使用 Oracle 时,可以使用连接字符串属性

Unicode=True

以 UTF-16 模式初始化 Oracle 客户端库。 这会导致 Oracle 客户端库接受 UTF-16(这与 UCS-2 非常相似),而不是多字节字符串。 这样,Oracle 的数据提供程序就可以始终使用任何 Oracle 代码页,而无需进行额外的翻译工作。 仅当您使用 Oracle 9i 客户端与采用 AL16UTF16 备用字符集的 Oracle 9i 数据库进行通信时,此配置才有效。 当 Oracle 9i 客户端与 Oracle 9i 服务器通信时,需要其他资源才能将 Unicode CommandText 值转换为 Oracle9i 服务器使用的相应多字节字符集。 当您知道通过将 Unicode=True 添加到连接字符串中来获得安全配置时,可以避免这种情况。

混合使用不同版本的 Oracle 客户端和 Oracle 服务器

当服务器的国家字符集指定为 AL16UTF16(Oracle 9i 的默认设置)时,Oracle 8i 客户端无法访问 Oracle 9i 数据库中的 NCHARNVARCHAR2NCLOB 数据。 由于在 Oracle 9i 之前未引入对 UTF-16 字符集的支持,因此 Oracle 8i 客户端无法读取它。

使用 UTF-8 数据

若要设置备用字符集,请将注册表项 HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\HOMEID\NLS_LANG 设置为 UTF8。 有关详细信息,请参阅平台上的 Oracle 安装说明。 默认字符集设置是与您要安装 Oracle 客户端软件的语言对应的主要字符集。 未将语言设置为与要连接的数据库的国家语言字符集匹配将导致参数和列绑定在主数据库字符集中发送或接收数据,而不是国家字符集。

OracleLob 只能更新完整字符。

出于可用性原因,对象 OracleLob 继承自 .NET Framework Stream 类,并提供 ReadByteWriteByte 方法。 它还实现了处理 Oracle 对象部分的方法,例如 Erase。 相比之下,Oracle 客户端软件提供了许多 API 来处理字符 LOBCLOBNCLOB)。 但是,这些 API 仅适用于完整字符。 由于这种差异,Oracle 数据提供程序实现了对ReadReadByte的支持,以便以字节的方式处理 UTF-16 数据。 但是,OracleLob 对象的其他方法仅允许对字符进行完整的操作。

另请参阅