2013-11-18 4 views
0

학생 기록을 업데이트하는 다음 코드가 있습니다. 오류나 예외없이 작동하지만 레코드를 업데이트하지 않습니다.MSACCESS에서 데이터 업데이트

왜 이런 일이 발생하는지 이해가되지 않습니다.

private void btnUpdate_Click(object sender, EventArgs e) 
    { 
     String query = "Update Student Set [email protected] , [email protected] where [email protected]"; 
     OleDbCommand cmd = new OleDbCommand(query, cn); 
     cmd.Parameters.Add("@RollNo", OleDbType.VarChar, 10); 
     cmd.Parameters.Add("@Name", OleDbType.VarChar, 10); 
     cmd.Parameters.Add("@Marks", OleDbType.Integer); 

     cmd.Parameters["@RollNo"].Value = txtRollNo.Text; 
     cmd.Parameters["@Name"].Value = txtName.Text; 
     cmd.Parameters["@Marks"].Value = Convert.ToInt16(txtMarks.Text); 

     try 
     { 
      cmd.ExecuteNonQuery(); 
      MessageBox.Show("Record Update Successfully"); 
      ClearFields(); 
     } 
     catch (OleDbException ex) 
     { 
      MessageBox.Show(ex.Message); 
     } 

    } 

"레코드 업데이트가 성공적으로 완료되었습니다."메시지가 표시되지만 레코드는 업데이트되지 않습니다. DataGrid보기에서 모든 레코드를 표시합니다.

+0

WPF는 UI 기술입니다. 그것은 ** 어떤 종류의 데이터베이스 작업과도 아무런 관련이 없습니다 **. –

+0

쿼리가 오류없이 실행 중이면 쿼리가 유효하지만 사용자의 목적에 맞지는 않습니다. SQL Studio를 열고 SQL에서 실행하려고하는 SQL 쿼리를 테스트하여 원하는 방식으로 레코드를 업데이트하는지 확인하십시오. 그런 다음 해당 쿼리를 코드로 이동하십시오. – Amicable

답변

3

OLEDB 매개 변수를 사용하는 경우 매개 변수를 지정한 이름을 무시하고 첫 번째 매개 변수에 첫 번째 값을 지정하고 두 번째 매개 변수에는 두 번째 매개 변수를 할당하는 등 순전히 위치 지정을 사용합니다.

cmd.Parameters.Add("@Name", OleDbType.VarChar, 10); 
cmd.Parameters.Add("@Marks", OleDbType.Integer);  
cmd.Parameters.Add("@RollNo", OleDbType.VarChar, 10); 

희망 작동합니다

그래서 난 당신이 매개 변수를 사용하는 순서를 반영하기 위해이 매개 변수를 작성하는 순서를 변경해야 할 것입니다 위의 작업을 믿습니다!

+0

나는 진드기를 가질 수 있나 (- : – Murph

관련 문제