Что происходит с Unicode в Системе. Данные. SQLCommand

У меня есть SQLCommand:

"Обновите Клиентов Определенное Имя = @name где код = @code"

и этот код:

cmd.Parameters[0].Value = "بهروز";//(some Unicode characters)  
cmd.Parameters[1].Value = 1;  
cmd.ExecuteNonQuery();  

или этот код:

        UpdateCommand.CommandText = "UPDATE [Customers] SET [Name] = @p1 WHERE (([Code] = @p2) AND ((@p3 = 1 AND [Name] IS NULL) OR ([Name] = @p4)))";
        UpdateCommand.Parameters.Add("@p1", System.Data.SqlDbType.SmallInt, 0, "Name");
        UpdateCommand.Parameters.Add("@p2", System.Data.SqlDbType.NVarChar, 0, "Code");
        UpdateCommand.Parameters.Add("@p3", System.Data.SqlDbType.NText, 0, "Name");
        UpdateCommand.Parameters.Add("@p4", System.Data.SqlDbType.SmallInt, 0, "Name");

и когда я Избранная таблица клиентов у меня есть много из"? "s.
почему SQLCommand работает Корректный при работе с SQLDataAdapter?
Как я могу преобразовать свои Данные Unicode в ANSI?

править:
другими словами:
какой код SQLDataAdapter использует?
у кого-либо есть исходный код той части платформы .NET?

5
задан Behrooz 2 January 2010 в 21:04
поделиться

3 ответа

Дорогой Бехруз просто использует простую SQL команду

N'ناصر حاجلو'

всякий раз, когда вы используете N вы заставляетеql использовать юникод и ничто не будет коррелировать.

.
6
ответ дан 14 December 2019 в 04:39
поделиться

Все строки в .NET имеют юникод. В .NET нет такой вещи, как ANSI-строка. Если вы хотите, чтобы строка, закодированная в массив байт как ANSI, использовала Encoding.GetBytes.

Ваша проблема может быть в том, как она посылает данные в хранимую процедуру. Я думаю, что вам нужно добавить тип данных sql в параметр. Попробуйте следующий код:

cmd.Parameters.Add("@Name", SqlDbType.NVarChar, 30);

Смотрите метод SqlParameterCollection.Add для получения дополнительной информации.

.
2
ответ дан 14 December 2019 в 04:39
поделиться

Угадайте: попробуйте явно задать SqlDbType параметра:

cmd.Parameters[0].Value = "بهروز";//(some Unicode characters)  
cmd.Parameters[0].SqlDbType = SqlDbType.NVarChar;
cmd.Parameters[1].Value = 1;  
cmd.ExecuteNonQuery();  
0
ответ дан 14 December 2019 в 04:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: