DBMS 는 데이터베이스를 관리하는 프로그램을 통칭한다. 일반적으로 사용자 다수가 동시에 접속해 정보를 조회하거나 변경하는 것이 가능하다. 대표적으로 MS ACCESS, MS SQL, Oracle 등이 있다. DB 데이터를 시스템에 등록한 후 해야한다.

ODBC 는 데이터베이스와의 연결 방법을 말한다. 다음은 ODBC를 이용한 예제다. 원리를 이용하기 위해
따로 함수를 분리하여 사용치 않았다.

void COdbcDemo2View::OnInitialUpdate()
{
 m_pSet = &GetDocument()->m_OdbcDemo2Set;
 CRecordView::OnInitialUpdate();

 if( m_List.GetHeaderCtrl()->GetItemCount() <= 0)
 {
  m_List.InsertColumn(0, _T("Name"), LVCFMT_LEFT, 100);
  m_List.InsertColumn(1, _T("Phone Number"), LVCFMT_LEFT, 150);
  m_List.InsertColumn(2, _T("Address"), LVCFMT_LEFT, 200);
  m_List.InsertColumn(3, _T("Age"), LVCFMT_LEFT,50);
 }

 CString strTmp=_T("");
 if(m_pSet->IsBOF()) return;
 
 while(!m_pSet->IsEOF())
 {
  m_List.InsertItem(0,m_pSet->m_Name,0);
  m_List.SetItemText(0,1,m_pSet->m_PhoneNumber);
  m_List.SetItemText(0,2,m_pSet->m_Address);

  strTmp.Format(_T("%ld"), m_pSet->m_Age);
  m_List.SetItemText(0,3,strTmp);
  m_pSet->MoveNext();


 }
 m_pSet->MoveLast();

}



// 레코드 추가 버튼 클릭시

void COdbcDemo2View::OnBnClickedButton1()
{
 if(!UpdateData(TRUE)) return;

 m_pSet->MoveLast();
 m_pSet->AddNew();
 m_pSet->SetFieldNull(NULL);

 m_pSet->m_Name = m_strName;
 m_pSet->m_Age = m_lAge;
 m_pSet->m_PhoneNumber = m_strPhone;
 m_pSet->m_Address = m_strAddress;

 m_pSet->Update();
 m_pSet->Requery();

 if(m_List.GetItemCount() >0) m_List.DeleteAllItems();
 


 CString strTmp=_T("");
 if(m_pSet->IsBOF()) return;

 while(!m_pSet->IsEOF())
 {
  m_List.InsertItem(0,m_pSet->m_Name,0);
  m_List.SetItemText(0,1,m_pSet->m_PhoneNumber);
  m_List.SetItemText(0,2,m_pSet->m_Address);

  strTmp.Format(_T("%ld"), m_pSet->m_Age);
  m_List.SetItemText(0,3,strTmp);
  m_pSet->MoveNext();


 }
 m_pSet->MoveLast();

}



// 업데이트 버튼 클릭시

void COdbcDemo2View::OnBnClickedButtonUpdate()
{
 
 if(!UpdateData(true)) return;

 m_pSet->Edit();

 m_pSet->m_Address = m_strAddress;
 m_pSet->m_Age = m_lAge;
 m_pSet->m_Name = m_strName;
 m_pSet->m_PhoneNumber = m_strPhone;

 

 
 m_pSet->Update();
 m_pSet->Requery();

 if(m_List.GetItemCount() > 0) m_List.DeleteAllItems();


  CString strTmp=_T("");
 if(m_pSet->IsBOF()) return;

 while(!m_pSet->IsEOF())
 {
  m_List.InsertItem(0,m_pSet->m_Name,0);
  m_List.SetItemText(0,1,m_pSet->m_PhoneNumber);
  m_List.SetItemText(0,2,m_pSet->m_Address);

  strTmp.Format(_T("%ld"), m_pSet->m_Age);
  m_List.SetItemText(0,3,strTmp);
  m_pSet->MoveNext();


 }
 m_pSet->MoveLast();


}

//삭제 버튼 클릭시

void COdbcDemo2View::OnBnClickedButtonDelete()
{
 m_pSet->Delete();
}


// 특정 자료를 찾을 때

void COdbcDemo2View::OnBnClickedButtonWhere()
{
 m_pSet->m_strFilter = _T("Name='홍길동'");
 m_pSet->Requery();

 if(m_List.GetItemCount() >0 ) m_List.DeleteAllItems();

 

 CString strTmp=_T("");
 if(m_pSet->IsBOF()) return;

 while(!m_pSet->IsEOF())
 {
  m_List.InsertItem(0,m_pSet->m_Name,0);
  m_List.SetItemText(0,1,m_pSet->m_PhoneNumber);
  m_List.SetItemText(0,2,m_pSet->m_Address);

  strTmp.Format(_T("%ld"), m_pSet->m_Age);
  m_List.SetItemText(0,3,strTmp);
  m_pSet->MoveNext();


 }
 m_pSet->MoveLast();
}


+ Recent posts