2016-07-29 5 views
2

SQL Server 2008 R2に文字列を挿入する際に質問があります。いくつかの国の手紙で文字列を挿入しようとすると、 "?"代わりに。SQL Server NvarcharとJavaの準備済みステートメント

は、私は文字列リテラルの先頭にNを追加することでこの問題を解決することを知っているが、私はこのように、JDBCは、書類を作成し使用しています:

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

私の質問は:私はこれを追加することができますどのように " N "の手紙?このようなことをすべきか?

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

これはまったく機能していないので、私は確信していない正直に言うと。 @a_horse_with_no_nameによって書かれたコメントに基づいて

+0

を。 Javaソースファイルのエンコーディングをチェックして、UTF-8として保存されるようにして、含まれている文字列リテラルが正しく解釈されるようにします。 –

+4

'sendStringParametersAsUnicode'メソッドを試しましたか? https://msdn.microsoft.com/en-us/library/ms378403(v=sql.110).aspx – gofr1

+0

ヒントありがとうございます。しかし、私は自分のソースコードファイルのエンコードをチェックしましたが、確かにUTF-8です。 – PastorPL

答えて

2

と@ gofr1 2つの解決策があります:

  1. 変更sendStringParametersAsUnicode - すべての文字列として扱われます。この原因は、「N」の文字列(これは世界的な変化である)

  2. setString()の代わりにPreparedStatement.setNString()を使用してください。これは「ローカル」変更です。

の両方が動作している - 'N'プレフィックスが必要ではないはずニーズへのより良いフィットの使用:)

関連する問題