Не удается вставить данные в таблицу с помощью SqlDataAdapter и хранимой процедуры

#sql-server #null #insert #sqldataadapter

#sql-сервер #null #вставить #sqldataadapter

Вопрос:

У меня есть код для выбора данных из приложения Windows form и загрузки в мою таблицу SQL Server. Я написал запрос, показанный здесь, но вставка не работает. При отладке я получаю ошибку исключения null. Я не могу понять, что вызывает исключение null. Пожалуйста, помогите

 public bool insert(contactClass c)
{
    bool isSuccess = false;
    dt = new DataTable();

    try
    {
        // while debugging control goes to catch due to null exception
        SqlDataAdapter adp1 = new SqlDataAdapter("sp_contact", db.con);
                
        adp1.InsertCommand.CommandType = CommandType.StoredProcedure;
                
        adp1.InsertCommand.Parameters.AddWithValue("@flag", 2);
        adp1.InsertCommand.Parameters.AddWithValue("@firstname", c.FirstName);
        adp1.InsertCommand.Parameters.AddWithValue("@lastname", c.LastName);
        adp1.InsertCommand.Parameters.AddWithValue("@contactno", c.ContactNo);
        adp1.InsertCommand.Parameters.AddWithValue("@address", c.Address);
        adp1.InsertCommand.Parameters.AddWithValue("@gender", c.Gender);

        adp1.Update(dt);

        if (dt.Rows.Count > 0)
        {
            isSuccess = true;
        }
        else
        {
            isSuccess = false;
        }
    }
    catch(Exception e)
    {
        string msg = e.Message;
        Console.WriteLine(msg);
    }
}
 

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

1. Примечание: вы не должны использовать sp_ префикс для своих хранимых процедур. Microsoft зарезервировала этот префикс для собственного использования (см. раздел Именование хранимых процедур ) , и вы рискуете столкнуться с конфликтом имен в будущем. Это также плохо сказывается на производительности вашей хранимой процедуры . Лучше просто избегать sp_ и использовать что-то другое в качестве префикса — или вообще без префикса!

2. Обязательно: можем ли мы уже прекратить использовать AddWithValue()? И AddWithValue — это зло .

3. Не могли бы вы отредактировать свой вопрос, пожалуйста, чтобы включить полное и полное сообщение об ошибке — в виде текста — вместе с выделением, из какой строки кода возникает ошибка?