【发布时间】:2016-07-29 08:59:53
【问题描述】:
我有一个关于向 SQL Server 2008 R2 插入字符串的问题。当我尝试插入带有一些国家字母的字符串时,我收到“?”反而。
我知道在字符串文字的开头添加 N 可以解决这个问题,但我使用的是 JDBC 预处理语句,如下所示:
INSERT INTO MyTable(col1, col2) VALUES (?,?);
我的问题是:如何添加这个“N”字母?我应该这样做吗?
INSERT INTO MyTable(col1, col2) VALUES (N?,N?);
说实话,我不相信,因为这根本行不通。
【问题讨论】:
-
N前缀应该不是必需的。检查 Java 源文件的编码,确保它保存为 UTF-8,以便正确解释它包含的任何字符串文字。 -
你试过
sendStringParametersAsUnicode方法吗? msdn.microsoft.com/en-us/library/ms378403(v=sql.110).aspx -
感谢提示。但是,我检查了我的源代码文件编码,它肯定是 UTF-8。
-
您不需要
N前缀。使用PreparedStatement.setNString()(而不是setString())应该可以正常工作 -
按照@a_horse_with_no_name 的建议尝试
setNString。我刚刚使用 Microsoft 的 JDBC 驱动程序测试了一个将希腊字符插入 SQL Server 2008R2 的 PreparedStatement,setString对我来说效果很好,但也许你的设置有点不同。
标签: java sql sql-server sql-server-2008 jdbc