2013-12-16 8 views
2

프로그램에 고객 클래스가 있고 액세스 데이터베이스에 고객 테이블이 있습니다. 데이터베이스의 고객 잔액을 지정된 값으로 업데이트하려고합니다. 올바른 것으로 보이는 모든 문장을 썼지 만 불행히도 데이터베이스는 영향을받지 않습니다. 이것은 내가 사전에 DB 감사를 업데이트하는 데 사용하는 방법은데이터베이스가 업데이트되지 않았습니다. ADO.Net

public static bool UpdateCustomer(Customer customer) 
{ 
    bool EditSucceeded = false; 
    string connectionString = @"Provider=Microsoft.ACE.OLEDB.12.0; Data Source=C:\GarageProTuning.accdb;"; 

    using (OleDbConnection _con = new OleDbConnection(connectionString)) 
    { 
     string commandText = "UPDATE Customer SET [email protected] WHERE [email protected]"; 

     using (OleDbCommand _cmd = new OleDbCommand(commandText, _con)) 
     { 
     _cmd.Parameters.AddWithValue("@CustomerID", customer.CustomerID); 
     _cmd.Parameters.AddWithValue("@Balance", customer.Balance); 
     _con.Open(); 
     int rowsAffected = _cmd.ExecuteNonQuery(); 
     if (rowsAffected > 0) 
      EditSucceeded = true; 
     _con.Close(); 
     } 
    } 
    return EditSucceeded; 
} 
+0

연결을 두 번 닫는 이유는 무엇입니까? – Brian

+0

복사 오류. :) –

+0

매개 변수없이 정적 값을 가진 commandtext를 다시 작성할 때주의 사항을 추가하고 싶습니다. 성공적으로 데이터베이스를 업데이트합니다. –

답변

3

들 :

public static bool UpdateCustomer(Customer customer) 
{ 
    bool EditSucceeded = false; 
    string connectionString = @"Provider=Microsoft.ACE.OLEDB.12.0; Data Source=C:\GarageProTuning.accdb;"; 

    using (OleDbConnection _con = new OleDbConnection(connectionString)) 
    { 
     string commandText = "UPDATE Customer SET [email protected] WHERE [email protected]"; 

     using (OleDbCommand _cmd = new OleDbCommand(commandText, _con)) 
     { 
     _cmd.Parameters.AddWithValue("@CustomerID", customer.CustomerID); 
     _cmd.Parameters.AddWithValue("@Balance", customer.Balance); 
     _con.Open(); 
     int rowsAffected = _cmd.ExecuteNonQuery(); 
     if (rowsAffected > 0) 
      EditSucceeded = true; 
     _con.Close(); 
     } 
    } 
    return EditSucceeded; 
} 

당신이 필요로하는 것은 :

public static bool UpdateCustomer(Customer customer) 
{ 
    bool EditSucceeded = false; 
    string connectionString = @"Provider=Microsoft.ACE.OLEDB.12.0; Data Source=C:\GarageProTuning.accdb;"; 

    using (OleDbConnection _con = new OleDbConnection(connectionString)) 
    { 
     string commandText = "UPDATE Customer SET [email protected] WHERE [email protected]"; 

     using (OleDbCommand _cmd = new OleDbCommand(commandText, _con)) 
     { 
     _cmd.Parameters.AddWithValue("@Balance", customer.Balance); // Explanation below 
     _cmd.Parameters.AddWithValue("@CustomerID", customer.CustomerID); 
     _con.Open(); 
     int rowsAffected = _cmd.ExecuteNonQuery(); 
     if (rowsAffected > 0) 
      EditSucceeded = true; 
     _con.Close(); 
     } 
    } 
    return EditSucceeded; 
} 

OleDbCommand.Parameters을 매우입니다 특히 동물을 추가/가공하는 방법에 관해서. 문서에서 나는 링크 :

따라서 OleDbParameter 개체가 OleDbParameterCollection에 추가되는 순서가 직접 명령 텍스트에서 매개 변수에 대한 물음표 자리의 위치와 일치해야합니다. 간단히 말해서

, 당신은 그들은 당신의 명령 텍스트에 표시되는 같은 순서대로 매개 변수를 추가해야합니다.

관련 문제