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();
}
'Windows > MFC' 카테고리의 다른 글
데이터베이스 :: OLE-DB (0) | 2011.11.23 |
---|---|
MFC 소켓 프로그래밍 ( TCP/IP 이용 ) (0) | 2011.11.20 |
오너 드로우 버튼 ( Owner-Draw ) (0) | 2011.11.20 |
서브 클래싱과 확장 컨트롤 (0) | 2011.11.20 |
특별한 메시지 - 사용자 정의 메시지 (0) | 2011.11.20 |