CallableStatement setString - 不支持的字符?

时间:2009-09-09 15:01:56

标签: java sql-server jdbc

我有一个Java应用程序解码通过网络接收的UTF-8编码String并将其保存到我的数据库中的varchar列(SQL Server 2000)。我使用JDBC的CallableStatement保存记录(调用setString方法来设置此列的参数。)

我遇到的问题是编写了一个包含ASCII值0(String)的特定NUL。这告诉我,SQL服务器不能代表特定的Unicode字符,并且JDBC驱动程序决定用ASCII值0替换,尽管我可能错了。

  • 还有其他人遇到过这个问题吗?
  • 在这种情况下,是否有一种可用于导致CallableStatement调用失败的机制?

理想情况下,我想保证数据已完全按照指定保存,否则“快速失败”。

我的数据库字符集为Latin1_General_AS_CS

提前致谢。

2 个答案:

答案 0 :(得分:1)

您需要在数据库中使用“NVARCHAR”类型。

答案 1 :(得分:0)

只是一个WAG,但是会使用.setBytes(String parameterName, byte[] x)吗?字节数组来自myString.getBytes()。您也可以尝试使用getBytes()使用不同的字符集。