Как отправить пустое (целое) значение через поле ввода в SQL

#c# #web-services #null #webmethod

Вопрос:

Я использую веб-метод с веб-сервисом, я хочу отправить в SQL пустой(нулевой) целочисленный параметр.

введите описание изображения здесь

Столбец SQL Stock имеет значение DEFAULT NULL

Выполнение int? stock в методах C# удалит все поля ввода.

Как можно решить эту проблему ?

DAL.cs

  public static bool AddProduct(string productName, string categoryName, double price,
            int stock, string productDescription,
                         string productOverview, string productImage)
        {
            System.Data.SqlClient.SqlConnection conn = new SqlConnection(connetionString);
            SqlDataAdapter adapter;
            SqlCommand comm;
          
                conn.Open();
                comm = new SqlCommand("InsertProduct", conn);
                comm.CommandType = CommandType.StoredProcedure;
                comm.Parameters.Add(new SqlParameter("productName", productName));
                comm.Parameters.Add(new SqlParameter("CategoryName", categoryName));
                comm.Parameters.Add(new SqlParameter("Price", price));
                comm.Parameters.Add(new SqlParameter("Stock", stock));
                comm.Parameters.Add(new SqlParameter("ProductDescription", productDescription));
                comm.Parameters.Add(new SqlParameter("ProductOverview", productOverview));
                comm.Parameters.Add(new SqlParameter("ProductImage", productImage));

                adapter = new SqlDataAdapter(comm);
                DataSet dataset = new DataSet();
                adapter.Fill(dataset, "products");
                return true;
 

BLL.cs

    public static string AddProduct(string productName, string categoryName, double price,
            int stock, string productDescription,
                         string productOverview, string productImage)
        {
            bool addProduct = DAL.AddProduct(productName, categoryName, price,
             stock, productDescription,
                          productOverview, productImage);
            return new JavaScriptSerializer().Serialize(addProduct);
        }
 

Веб-метод

 [WebMethod]
public string AddProduct(string productName, string categoryName, double price,
        int stock, string productDescription,
                     string productOverview, string productImage)
{
    return BLL.AddProduct(productName, categoryName, price,
         stock, productDescription,
                      productOverview, productImage);
}
 

Ошибка

Система.Номер.StringToNumber(String str, параметры стилей чисел, буфер и номер, информация о NumberFormatInfo, логический синтаксический анализ) System.Number.Система ParseInt32(Строка s, стиль NumberStyles, информация о NumberFormatInfo).Строка.Система.Иконописный.Система ToInt32(поставщик IFormatProvider).Преобразовать.Тип изменения(значение объекта, Тип преобразования, поставщик IFormatProvider) System.Web.Services.Протоколы.Скалярная материя.fromString(Строковое значение, тип типа) — Завершите отслеживание внутренней аномалии картриджа — — — System.Web.Services.Протоколы.Скалярная материя.Система fromString(Строковое значение, тип типа).Веб-сервисы.Протоколы.ValueCollectionParameterReader.Read(коллекция NameValueCollection) System.Web.Services.Протоколы.HtmlFormParameterReader.Read(запрос HttpRequest) System.Web.Сервисы.Протоколы.HttpServerПротокол.Параметры чтения() System.Web.Services.Протоколы.Обработчик веб-сервисов.CoreProcessRequest()

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

1. Я думаю, что часть сообщения об ошибке отсутствует. Я ожидал бы, что он начнется с типа исключения (например, исключение NullReferenceException) и сообщения (например, ссылка на объект не установлена на экземпляр объекта), за которым следует трассировка стека, но похоже, что она начинается частично через трассировку стека.