#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. Не могли бы вы отредактировать свой вопрос, пожалуйста, чтобы включить полное и полное сообщение об ошибке — в виде текста — вместе с выделением, из какой строки кода возникает ошибка?