首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JDBC getNString()

JDBC getNString()
EN

Stack Overflow用户
提问于 2018-04-19 11:49:14
回答 1查看 1.9K关注 0票数 1

我正在使用一个由Microsoft支持的Java应用程序。我使用了nvarchar列,我的计划是支持Unicode字符。因此,在我的JDBC层中,我使用了来自结果集的getNString()方法,它工作得很好。不过,出于好奇,我将所有getNString()方法更改为普通的getString()方法,而且它还能很好地正确显示Unicode字符。

我也从下面的问题中找到了类似的观察结果。

我应该使用JDBC getNString()而不是getString()吗?

你们知道这件事吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-04-19 15:08:50

在我看来,getNStringsetNString的存在是JDBC的一个设计错误。但是,区分(VAR)CHAR和N(VAR)CHAR的数据库系统可以将这个setter作为一个类型提示来为N(VAR)CHAR发送特定格式的数据。对于getter,通常没有区别,因为在大多数驱动程序中,在调用此方法之前已经获取了数据,并且驱动程序应该知道正确的转换。

特别是对于Microsoft驱动程序,在默认配置下,使用setStringsetNString没有什么区别:两者都将导致以unicode的形式发送值。当连接属性sendStringParametersAsUnicode设置为false时,这会发生更改。

另见类型2 SQL Server 2008 JDBC驱动程序中的NVARCHAR支持

您不需要使用JDBC 4 API来处理SQL Server中的NVARCHAR (UCS-2)数据。现有的JDBC3API(如getString/setString/updateString )用于将/set/updateString值作为updateString(总是Unicode)。在使用JDBC 3方法时,唯一需要注意的是sendStringParametersAsUnicode属性的设置。默认情况下,此属性设置为“true”,这意味着PreparedStatement和CallableStatement参数将发送到Unicode中的Server。将设置更改为“false”允许驱动程序在发送时将输入参数值转换为数据库的字符集,从而节省协议中的空间。 也就是说,使用JDBC 4 API来处理NVARCHAR数据有一些优点。主要优点是JDBC正式识别NVARCHAR类型,包括getNString/setNString/updateNString等访问器方法。例如,可以使用setNString方法向Unicode中的Server发送输入参数值,即使sendStringParametersAsUnicode设置为'false‘。 换句话说,对于sendStringParametersAsUnicode=true的默认设置,JDBC 4 'N‘方法的行为方式与JDBC 3/JDBC 4非“N”方法对于NVARCHAR数据的行为相同。

有关sendStringParametersAsUnicode连接属性的详细信息,请参阅设置连接属性

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49920395

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档