Как установить значение null в целое число в функции posgrest из C#

#c# #.net #postgresql #function #null

#c# #.net #postgresql #функция #null

Вопрос:

Меня смущает решение о передаче параметра null целочисленному типу. Вот мой код в моем проекте .Net с angular. Спасибо за вашу помощь.

 if(data.searchRange != "") 
{
    m_npgDB.SetParams("p_searchRange", int.Parse(data.searchRange)); 
}
else
{
    m_npgDB.SetParams("p_searchRange", ""); 
}
  

Комментарии:

1. Разрешено ли просто пройти null ? Если нет, то понимает ли это / разрешает DBNull.Value ?

2. Столбец в базе данных допускает значение null. У меня есть условие в функции postgrest , например (p_searchRange равен нулю или search_range = p_searchRange )

3. Целочисленный тип может быть null в C #, но вы не передаете null в предложении else, вы передаете пустую строку.

4. @jdoer1997 Целые числа являются типами значений, поэтому они не могут быть null

5. Хм, я пытаюсь изменить тип на числовой и использовать SetParamNumber как » «. И это сработало!

Ответ №1:

Вы просто создаете параметр

 if (int.TryParse(data.searchRange, out var range))
{
    m_npgDB.SetParams("p_searchRange", range); 
}
else
{
    m_npgDB.SetParams("p_searchRange", null); 
}
  

Вы должны иметь возможность использовать целое число с нулевым значением

 var value = int.TryParse(data.searchRange, out var range) ? range : default(int?);

m_npgDB.SetParams("p_searchRange", value); 

     
  

Комментарии:

1. (К вашему сведению, явное приведение на range не требуется)

2. Метод setParams принимает параметр 2 в виде строки, int, bool и т.д., Но не принимает значение nullable.

3. Вы можете изменить SetParams метод, чтобы принимать значение с нулевым значением int или сделать его универсальным. ADO.NET принимает различные типы параметров .NET для запросов sql.

4. метод setPrams в библиотеке NpgDBManager из метаданных. Не удается изменить метод. Если вы передаете значение nullable в параметре. данные представляют собой символ, подобный строке «null». не нулевое значение.

5. Затем используйте какой-либо другой метод, который принимает int? или используйте Npgsql напрямую для создания команды с параметрами.