2017-10-24 10 views
2

그래서 두 개의 섹션과 삭제할 섹션이 하나 있습니다. enter image description here 하지만 데이터를 추가 할 때 문제가 발생합니다. 삭제 된 섹션과 관련된 콤보 상자를 확인하면 방금 추가 한 데이터를 제외한 모든 이전 데이터를 볼 수 있습니다. 그래서 나는 어떤 종류의 솔루션을 새로 고침하고 추가 버튼을 클릭하자마자 모든 것을 콤보 상자에 넣으려고하지만 최신 데이터가 표시되지 않습니다. 추가 버튼C# Oledb 응용 프로그램의 데이터 업데이트

코드는 :

여기
private void btnAddSubj_Click(object sender, EventArgs e) 
    { 
     OleDbDataReader cmd = ad.select("SELECT TOP 1 ID FROM subjects WHERE ID = " + int.Parse(txtSubjID.Text)); 
     if (cmd.Read()) 
     { 
      MessageBox.Show("Subject ID you entered is taken, please select a different one"); 
     } 
     else 
     { 
      ad.insert("insert into subjects (`ID`,`subjectName`) values(" + int.Parse(txtSubjID.Text) + ",'" + txtSubjName.Text + "')"); 

     } 
     populateComboBoxSubjName(); 
    } 

광고는 내가 생성 및 삽입에 대한 모든 방법을 선택, 삭제, 업데이트가 포함 된 클래스에 연결되어 있습니다. populateComboBoxSubjName에 대한

코드 :

private void populateComboBoxSubjName() 
    { 
     comboBoxSubjName.Items.Clear(); 
     OleDbDataReader cmd = ad.select("SELECT * FROM subjects"); 

     while (cmd.Read()) 
     { 
      for (int f = 0; f < cmd.FieldCount; f+=2) 
      { 
       string data = (cmd.GetValue(f).ToString() + "-" + cmd.GetValue(f + 1).ToString()); 
       comboBoxSubjName.Items.Add(data); 
      } 
     } 
    } 

버튼 삭제 코드 :

private void btnDeleteSubj_Click(object sender, EventArgs e) 
    { 
     string selected = this.comboBoxSubjName.GetItemText(this.comboBoxSubjName.SelectedItem); 
     string[] idToDelete = selected.Split('-'); 
     ad.delete("DELETE FROM subjects WHERE ID=" + int.Parse(idToDelete[0])); 
    } 
+0

'bt, DeleteSbj_Click()'도 표시 할 수 있습니까? – Wndrr

+0

@Wndrr이 코드를 추가했습니다. –

+0

SQL 삽입 및 서식 문제를 방지하기 위해 매개 변수를 사용하십시오. while-read 내부의 루프는 필요하지 않습니다. 나중에 필드 위치가 변경 될 수 있으므로 인덱스 대신 필드 이름을 사용해야합니다. – LarsTech

답변

0
내가 다른 클래스를 사용하여 SQL 쿼리를 수행하려고했다

(내가 하나를 생성하고 다른 방법으로 모든 쿼리 및 연결을 코딩 각 같은 삽입, 삭제, 선택) 그래서 나는 전체 명령을 반복해서 써야 할 필요는 없지만 어떤 이유로 그것이 작동하지 않았다. 나는 모든 명령을 몇번이고 써야했고, 그것은 완벽하게 일했다.