java - SQL Server Nvarchar 和 Java 准备语句

标签 java sql sql-server sql-server-2008 jdbc

我有一个关于向 SQL Server 2008 R2 插入字符串的问题。当我尝试插入带有一些国家字母的字符串时,我收到“?”反而。

我知道在字符串文字的开头添加 N 可以解决这个问题,但我使用的是 JDBC 准备语句,如下所示:

INSERT INTO MyTable(col1, col2) VALUES (?,?);

我的问题是:如何添加这个“N”字母?我应该做这样的事情吗?

INSERT INTO MyTable(col1, col2) VALUES (N?,N?);

老实说,我不相信,因为这根本不起作用。

最佳答案

根据@a_horse_with_no_name 和@gofr1 的评论,有 2 种解决方案:

  1. 更改 sendStringParametersAsUnicode - 这导致所有字符串都将被视为“N”字符串(这是全局更改)

  2. 使用 PreparedStatement.setNString() 而不是 setString() - 这是“本地”更改。

两者都有效 - 使用更适合您的需求:)

关于java - SQL Server Nvarchar 和 Java 准备语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38654672/

相关文章:

java - JPA/Hibernate如何获取每个类别的N个项目

sql - excel导入sql时数据转换错误

sql-server - 操作数类型冲突

c# - Windows Azure 中的数据库连接

java - 在java代码中使用不同的压缩算法

java - Spring Boot 2.1.x JSP 文件已找到但未呈现

java - 为什么按原样实现调整大小?

java - 使用 Firefox(而不是 Chrome)连接后,Jetty 9.2.x Websocket 服务器连接自动关闭

sql - 如何针对分层表创建 View

java - jpa mssql @Lob 并创建具有可移植性的 2GB 列