JDBC 驱动程序的国际功能
Microsoft SQL Server 2005 JDBC Driver 的国际功能包括:
通过使用与 SQL Server 相同的语言来为用户提供完全本地化的体验。
对于受区域设置影响的 SQL Server 数据,支持 Java 1.4 级的语言转换。
无论使用何种操作系统,都支持国际语言。
默认情况下,Java 中的字符数据作为 Unicode 进行处理;Java String 对象表示 Unicode 字符数据。在 JDBC 驱动程序中,唯一可以不遵守此规则的是 ASCII 流 getter 和 setter 方法,这属于比较特殊的情况,因为这些方法使用的字节流带有单个已知代码页 (ASCII) 的隐式假定。
此外,JDBC 驱动程序提供了 sendStringParametersAsUnicode 连接字符串属性。此属性可用于指定作为 ASCII 而不是 Unicode 来发送的字符数据的预定义参数。
有关 sendStringParametersAsUnicode 连接字符串属性的详细信息,请参阅设置连接属性。
来自服务器的 Unicode 文本数据不是必须要转换的数据。它将作为 Unicode 直接进行传递。来自服务器的非 Unicode 数据从数据库或列级别的数据代码页直接转换为 Unicode。JDBC 驱动程序将使用 Java 虚拟机 (JVM) 转换例程执行这些转换。这些转换将通过所有类型化 String 和 Character 流 getter 方法得到执行。
如果 JVM 无法对来自数据库的数据提供相应的代码页支持,则 JDBC 驱动程序将引发“Java 环境不支持 XXX 代码页”异常。
从驱动程序发送至服务器的字符数据以 Unicode 开头。Unicode 传递到服务器,如果目标列不是 Unicode 类型列(nchar、nvarchar、ntext),则将在服务器中执行适当的转换。在此情况下,对于 String 和 Character 流,Unicode 文本将通过 JDBC 驱动程序 setter 方法和 updater 方法进行传递。
对于日期、时间和货币,将使用 Locale 对象在 Java 语言级别执行本地化数据的所有格式设置,并针对 Date、Calendar 和 Number 数据类型执行各种不同的格式设置方法。只有在极少数的情况下,JDBC 驱动程序需要传递本地化格式中受区域设置影响的数据,同时需要结合默认的 JVM 区域设置来使用相应的格式化程序。
作为性能方面的一项增强功能,可以通过设置 sendStringParametersAsUnicode 连接字符串属性将 String 参数以非 Unicode 格式传递到 SQL Server。sendStringParametersAsUnicode 的默认设置为“true”,这意味着 String 参数将作为 Unicode 进行发送。如果 sendStringParametersAsUnicode 设置为“false”,则连接上的所有 String 参数将使用数据库默认的排序规则发送到服务器。