Невозможно вставить русский текст в базу данных SQL Server 2005 - PullRequest
0 голосов
/ 10 ноября 2010

Я использую хранимые процедуры и DataContext для вставки данных в базу данных SQL Server (база данных ASP.NET 4 + SQL Server 2005, хостинг GoDaddy)

Но после вставки русского текста я вижу что-то вроде этого - '??????'

Если я вставляю постоянный текст, я использую следующую конструкцию - N'russian_text', и она отлично работает.

Конечно, мне нужно использовать переменные в качестве параметров процедуры, НО я не могу это использовать (например, N @ var fails)

ХОТЯ Я использую поля N-типа в таблицах (nvarchar и т. Д.)

Кто-нибудь знает, где ошибка?

Ответы [ 2 ]

2 голосов
/ 10 ноября 2010

Переменные NVARCHAR объявлены как

DECLARE @var NVARCHAR(100)
SET @var = N'unicode text'

, а не как DECLARE N @ var ..., SET N @ var

То же самое относится к параметрам процедуры и функции

CREATE PROCEDURE InsertUnicodeData( @data NVARCHAR(200) ) AS
....
1 голос
/ 10 ноября 2010

ваши переменные SqlParamter в .net должны иметь тип SqlDbType.NVarChar.
как сейчас они SqlDbType.VarChar.
на сервере sql ваш @text должен быть nvarchar (ColLength)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...