как передать параметр sql как нулевое значение в целочисленной переменной типа данных?
Как передать параметр sql как нулевое значение в целочисленную переменную типа данных ?
StockBO sBO = new StockBO();
sBO.Mode = 2;
if (ddcmpanyname.SelectedIndex != 0)
{
sBO.Client_id = Convert.ToInt16(ddcmpanyname.SelectedValue);
}
else
{
sBO.Client_id = Convert.ToInt16(DBNull.Value);//Object cannot be cast from DBNull to other types.
sBO.Client_id =DBNull.Value;//Cannot implicitly convert type
}
ds=_StockController.StockGet(sBO);
Я изменил код, как это дает ошибку, как я мой комментарий проверить еще часть
6 ответов
это не совсем понятно, что вы имеете в виду. Если вы пытаетесь передать значение null в параметре SQL, вы должны использовать DBNull.Value
как значение для вашего SqlParameter
(или любой тип, который вы используете). Если вы хотите представить целое число с нулевым значением в C#, используйте int?
(или Nullable<int>
- это одно и то же).
вы не можете хранить значение null в обычной переменной типа значения, не имеющей значения null. Типы значений Nullable по-прежнему являются структурами, но они обертывают ненулевой тип и добавьте логическое значение, чтобы указать, является ли оно" реальным " значением или null. C# добавляет синтаксический сахар вокруг него, позволяя использовать null
литерал для назначений, различных преобразований, поднятых операторов etc:
int? value = 5;
value = null;
if (value == null)
{
...
}
если это не поможет, пожалуйста, дайте нам больше информации о том, что вы пытаетесь сделать.
EDIT: хорошо, так что это выглядит как StockBO.Client_id
должно иметь тип short?
- но тогда это не позволит DBNull.Value
быть установленным сразу. Вы следует использовать null
для установки идентификатора клиента в значение null. Всякий раз, когда вы переводите между объектами и параметрами и результатами SQL, вам нужно будет выполнить такое преобразование самостоятельно - если вы обнаружите, что делаете это регулярно, разработайте некоторые вспомогательные методы, чтобы сделать это проще для вас.
конечно, если вы начнете использовать LINQ to SQL или что-то в этом роде, вам не нужно беспокоиться о DBNull.Value
- поставщики LINQ, как правило, поддерживают типы значений nullable напрямую.
от SQL до C#>
int number;
Int32.TryParse(paramvalue, out number);
от C# до SQL >
добавьте DBNull в свой параметр
попробовать DBNull.Value
; например:
dbParamId.Value = (object)MyID ?? DBNull.Value;
лучше сразу назначить DBNull.Значение как:
sBO.Client_id = Значение Dbnull.Значение
значение dbnull.Значение для всех объектов
рассмотрение ParamValue содержит результат запроса в виде целого числа или DBNull.Значение, я бросаю его в int? таким образом:
var Result = ParamValue as int?;
чтобы определить, является ли результат нулевым, проверьте результат.Свойство hasvalue. В противном случае используйте его как обычное целое число или результат.Значение