2016-07-29 10 views
2

Ich habe eine Frage zum Einfügen von Zeichenfolgen in SQL Server 2008 R2. Wenn ich versuche, Zeichenfolgen mit einigen nationalen Buchstaben einzufügen, erhalte ich "?" stattdessen.SQL Server Nvarchar und Java vorbereitete Anweisung

Ich weiß, dass N am Anfang einer Zeichenkette hinzugefügt wörtliche wird dieses Problem beheben, aber ich bin mit JDBC-Anweisungen vorbereitet, wie folgt aus:

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

Meine Frage ist: Wie kann ich diese hinzufügen können " N "Brief? Sollte ich so etwas tun?

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

Um ehrlich zu sein, bin ich nicht überzeugt, weil das überhaupt nicht funktioniert.

+0

Der 'N'-Präfix sollte nicht notwendig sein. Überprüfen Sie die Codierung Ihrer Java-Quelldatei, um sicherzustellen, dass sie als UTF-8 gespeichert ist, damit alle darin enthaltenen Zeichenfolgenliterale richtig interpretiert werden. –

+4

Haben Sie die Methode 'sendStringParametersAsUnicode' probiert? https://msdn.microsoft.com/en-us/library/ms378403(v=sql.110).aspx – gofr1

+0

Danke für Hinweis. Allerdings habe ich meine Quellcode-Dateien überprüft und es ist sicher UTF-8. – PastorPL

Antwort

2

Basierend auf Kommentare von @a_horse_with_no_name geschrieben und @ gofr1 gibt es zwei Lösungen:

  1. ändern sendStringParametersAsUnicode - diese Ursache, die alle String als "N" Strings behandelt werden (diese Änderung ist global)

  2. Verwenden Sie PreparedStatement.setNString() anstelle von setString() - und dies ist "lokale" Änderung.

Beide arbeiten - Einsatz, die Ihre Bedürfnisse passen besser :)