2016-09-12 2 views
0

Я хочу обновить детали. У меня есть код в классе доступа к данным. Но после выполнения ExecuteScalar() он переходит в блок catch и показывает исключение как null.Ошибка в работе ado.net crud

Программа:

public bool UpdateData(Customer objcust) // passing model class object because it contains all customer properties. 
{ 
    SqlConnection con = null; 
    // string result = ""; 
    //int rows = 0; 
    try 
    { 
     string connectionString = @"server=(local)\SQLExpress;database=CustDemo;integrated Security=SSPI;"; 
     con = new SqlConnection(connectionString); 
     SqlCommand cmd = new SqlCommand("UPDATE Customer SET Name = @Name , Address = @Address, Gender [email protected] , [email protected] WHERE Customer.CustomerID = @CustomerID",con); 
     cmd.CommandType = CommandType.Text; 
     cmd.Parameters.AddWithValue("@Name", objcust.Name); 
     cmd.Parameters.AddWithValue("@Gender", objcust.Gender); 
     cmd.Parameters.AddWithValue("@Address", objcust.Address); 
     cmd.Parameters.AddWithValue("@City", objcust.City); 

     con.Open(); 
     cmd.ExecuteScalar(); 

     return true; 
    } 
    catch(Exception ex) 
    { 
     return false; 
    } 
} 
+5

Вы не передали параметр идентификатора клиента. Пожалуйста, проверьте, и он равен нулю. –

+0

Может ли любое из значений, присвоенных вашим параметрам, быть нулевым? – GuidoG

+0

Я не думаю, что это может быть null, если это значение не существует в таблице, которую она не может обновить! @GuidoG – Aravind

ответ

0

Вместо cmd.ExecuteScalar(); Попробуйте использовать

cmd.ExecuteNonQuery(); 

ExecuteNonQuery используется специально выполнения UPDATE, INSERT или DELETE заявления.