У меня есть 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?
Дорогой Бехруз просто использует простую SQL команду
N'ناصر حاجلو'
всякий раз, когда вы используете N вы заставляетеql использовать юникод и ничто не будет коррелировать.
.Все строки в .NET имеют юникод. В .NET нет такой вещи, как ANSI-строка. Если вы хотите, чтобы строка, закодированная в массив байт как ANSI, использовала Encoding.GetBytes.
Ваша проблема может быть в том, как она посылает данные в хранимую процедуру. Я думаю, что вам нужно добавить тип данных sql в параметр. Попробуйте следующий код:
cmd.Parameters.Add("@Name", SqlDbType.NVarChar, 30);
Смотрите метод SqlParameterCollection.Add для получения дополнительной информации.
. Угадайте: попробуйте явно задать SqlDbType
параметра:
cmd.Parameters[0].Value = "بهروز";//(some Unicode characters)
cmd.Parameters[0].SqlDbType = SqlDbType.NVarChar;
cmd.Parameters[1].Value = 1;
cmd.ExecuteNonQuery();