Microsoft SQL Server JDBC Driver 的国际功能包括:

处理字符数据

默认情况下,Java 中的字符数据作为 Unicode 进行处理;Java String 对象表示 Unicode 字符数据。在 JDBC Driver 中,唯一可以不遵守此规则的是 ASCII 流的 getter 和 setter 方法,这属于比较特殊的情况,因为这些方法使用的字节流带有单个已知代码页 (ASCII) 的隐式假定。

此外,JDBC Driver 还提供了 sendStringParametersAsUnicode 连接字符串属性。此属性可用于指定字符数据的预定义参数作为 ASCII 或多字节字符集 (MBCS) 而不是 Unicode 来发送。有关 sendStringParametersAsUnicode 连接字符串属性的详细信息,请参阅 设置连接属性

驱动程序传入转换

来自服务器的 Unicode 文本数据不是必须要转换的数据。它将作为 Unicode 直接进行传递。来自服务器的非 Unicode 数据从数据库或列级别的数据代码页直接转换为 Unicode。JDBC 驱动程序将使用 Java 虚拟机 (JVM) 转换例程执行这些转换。这些转换将通过所有类型化 String 和 Character 流 getter 方法得到执行。

如果 JVM 无法对来自数据库的数据提供相应的代码页支持,则 JDBC Driver 将引发“Java 环境不支持 XXX 代码页”异常。要解决此问题,您应安装该 JVM 所需的完整国际字符支持。有关示例,请参阅 Sun Microsystems 网站上的 Supported Encodings(受支持的编码)文档。

驱动程序传出转换

从驱动程序发送至服务器的字符数据可以为 ASCII 或 Unicode。例如,新的 JDBC 4.0 区域字符方法(例如,SQLServerPreparedStatement 类和 SQLServerCallableStatement 类的 setNStringsetNCharacterStreamsetNClob 方法)始终以 Unicode 格式将参数值发送到服务器。

另一方面,非区域字符 API 方法(例如,SQLServerPreparedStatement 类和 SQLServerCallableStatement 类的 setStringsetCharacterStreamsetClob 方法)仅在 sendStringParametersAsUnicode 属性设置为“True”(默认值)时才以 Unicode 格式将值发送到服务器。

非 Unicode 参数

为了获得非 Unicode 参数的 CHARVARCHARLONGVARCHAR 类型的最佳性能,请将 sendStringParametersAsUnicode 连接字符串属性设置为“False”,并使用非区域字符方法。

格式问题

对于日期、时间和货币,将使用 Locale 对象在 Java 语言级别执行本地化数据的所有格式设置,并针对 DateCalendarNumber 数据类型执行各种不同的格式设置方法。只有在极少数的情况下,JDBC Driver 才需要以本地化格式传递受区域设置影响的数据,此时需要根据默认的 JVM 区域设置来使用相应的格式化程序。

排序规则支持

JDBC Driver 3.0 支持 SQL Server 2000 和 SQL Server 2005 支持的所有排序规则,此外还支持 SQL Server 2008 中引入的新排序规则或新版 Windows 排序规则名称。

有关排序规则的详细信息,请参阅 SQL Server 联机丛书中的排序规则和 Unicode 支持Windows 排序规则名称 (Transact-SQL)

请参阅

JDBC 驱动程序概述