2014-11-26 1 views
0

조직의 관리 시스템을 개발했습니다. 내 양식에 많은 datagridviews 있습니다. 그리고 모든 삭제 작업에 대해 아래에서 볼 수 있듯이 같은 명령 (각 셀의 콘텐츠 클릭 이벤트)이 있습니다. 한 곳에서 잘 작동하고 값이 테이블에서 삭제됩니다. 하지만 다른 테이블에서, 내가 버튼을 클릭하면 이름을 datagridview 그래서 셀 내용을 클릭 이벤트 내에서 데이터베이스에서 해당 엔티티의 레코드를 삭제하기로되어 있습니다. 클릭하면 행이 제거되지만 데이터베이스를 열면 값이 그대로 유지됩니다.DELETE 명령이 정상적으로 작동하는 것처럼 값이 테이블에서 삭제되지 않습니다.

내 coide은 여기에 있습니다 :

private void data_grid2_CellContentClick(object sender, DataGridViewCellEventArgs e) 
     { 
      // Result's tab's Gridview 
      int m = 0; 
      int currentRow = int.Parse(e.RowIndex.ToString()); 
      try 
      { 
       string name = data_grid2.CurrentRow.Cells["RollNo"].Value.ToString(); 
       m = int.Parse(name); 
      } 
      catch (Exception ex) 
      { 
       throw; 
      } 

      if (data_grid2.Columns[e.ColumnIndex] == editButton && currentRow >= 0) 
      { 

      } 

      else if (data_grid2.Columns[e.ColumnIndex] == deleteButton && currentRow >= 0) 
      { 
       string queryDeleteString = "DELETE * FROM finalResult where RollNo = " + m + ""; 
       OleDbCommand sqlDelete = new OleDbCommand(); 
       sqlDelete.CommandText = queryDeleteString; 
       sqlDelete.Connection = database; 
       sqlDelete.ExecuteNonQuery(); 
       string queryString = "SELECT RollNo, RegYear, faculty, program, examNature, finalmarksObt, totalMarks, Percentage FROM finalResult"; 
       loadResults(queryString); 

      } 
} 

은 무엇 장면 뒤에 잘못 될 수 있을까? enter image description here

+1

연결 고리가 무엇입니까? DataDirectory 바로 가기를 사용하고 있습니까? 그리고 만약 그렇다면 복사 할 출력 디렉토리가 항상 복사로 설정된 프로젝트 파일 사이에 MDB 파일이 나열되어 있습니까? – Steve

+0

string connectionString = @ "공급자 = Microsoft.ACE.OLEDB.12.0; 데이터 원본 = RAIMS.accdb – Sameer

+1

좋아요, 이것은 응용 프로그램의 동일한 시작 경로에있는 데이터베이스를 사용한다는 것을 의미합니다 .Visual Studio에서 이것은 BIN \ DEBUG 폴더에 프로젝트 파일 사이에 ACCDB 파일이 있습니까? 예 해당 속성이 무엇입니까? 출력 디렉토리로 복사 – Steve

답변

1

내 접근은 약간 녹슨,하지만 난 삭제 구문은 여전히 ​​SQL 서버와 동일한 생각

string queryDeleteString = "DELETE * FROM finalResult where RollNo = " + m + ""; 

귀하의 구문은 당신이 * 삭제하려고하기 때문에 유효하지 않습니다. 단순히 삭제 만하면됩니다.

string queryDeleteString = "DELETE FROM finalResult where RollNo = " + m + ""; 

이 코드는 SQL 주입에 익숙합니다.

+0

선생님, 고마워요. 내 데이터베이스가있는 폴더에 대한 사용 권한의 방해로 인해 발생할 수 있다고 말할 수 있습니까? – Sameer

+0

그리고 네, 분명히 반 - SQL 인젝션 기법으로 보호하고 있습니다. 그것을 지적 해 주셔서 감사합니다. – Sameer

+1

m이 데이터베이스에 있다고 생각하는 아이디어입니까? –