ODBC DAO ODBC n ODBC q q n
ODBC &DAO 안명상
ODBC 개념 n ODBC q q n ODBC 등록 q n Open Database Connectivity DBMS엔진들과 연결하여 데이타베이스 응용 프로그램을 작성하는 API 제어판-> ODBC 데이터 원본 관리자 예제 database: namecard q Table: persons create table persons ( id int auto_increment, name varchar(10) primary key, tel varcahr(15), address varchar(50), bigo varchar(50) );
Project: Name. Card n Which database support q q n Data source q q n ODBC DAO Recordset Type q q n None Header file only Database view without file support Database view with file support Snapshot : 데이타베이스 이용이 끝난 다음 갱신내용 저장 Dynaset: 갱신이 되는 순간 바로 수정 Class 생성 q q CName. Card. View의 base class 는 CRecord. View CName. Card. Set 클래스 추가로 생성 , Crecordset 상속
Project: Name. Card n CRecord. View 자원과 Crecordset의 연결 q q Resource: IDD_NAMECARD_FORM 이름, 전화번호, 주소, 비고에 대응하는 Edit 상자 설정 , 각 Edit 상자와 Crecordset 의 멤버변수와의 연결 n q Do. Data. Exchange() 함수는 위 설정을 유지 n n 예) IDC_NAME : m_p. Set->m_name. . DDX_Field. Text(p. DX, IDC_NAME, m_p. Set->m_name, m_p. Set); 컴파일 / 런
Project: Name. Card n 데이터 수정 q 메뉴-> 레코드 입력 (IDD_MODERATE) oid CName. Card. View: : On. Moderate() { // TODO: Add your command handler code here m_p. Set->Edit(); // 현재 레코드를 를 수정가능 상태로 전환 Update. Data(TRUE); //자원에 있는 데이타를 m_p. Set으로 전송 m_p. Set->Update(); m_p. Set->Requery(); m_p. Set->Move. First(); Update. Data(FALSE); //m_p. Set의 데이타를 자원으로 전송 }
Project: Name. Card 데이터 검색 n q q 메뉴-> 레코드 검색 (IDD_SEEKNAME) m_p. Set->m_str. Filter 에 질의 설정 후 Requery 실행 void CName. Card. View: : On. Seekname() { Update. Data(TRUE); //자원에 있는 데이타를 m_p. Set으로 전송 m_p. Set->m_str. Filter. Format("name='%s'", m_p. Set->m_name); m_p. Set->Requery(); Update. Data(FALSE); }
Project: Name. Card n CRecord. View 와 document의 관계 public class CName. Card. Doc: public Cdocument { … public: CName. Card. Set m_name. Card. Set; … } void CName. Card. View: : On. Initial. Update() { m_p. Set = &Get. Document()->m_name. Card. Set; CRecord. View: : On. Initial. Update(); Get. Parent. Frame()->Recalc. Layout(); Resize. Parent. To. Fit(); } CName. Card. Set* m_p. Set; // 멤버변수
Project: Name. Card. DAO n DAO q q n CName. Card. DAOView q q n 단일 컴퓨터용 데이타베이스 라이브러리 Data Source 선택: DAO CDao. Record. View를 상속 CRecord. View 와 기능이 거의 같으며 단 CDao. Record. View DAO를 핸들 링하는 CDao. Recordset을 m_p. Set으로 가짐 CName. Card. DAOset q CDao. Recordset 를 상속
Program improvement 검색시 다이얼로그 실행 n q 다이얼로그 IDD_SNAME 생성 , Edit_Box을 m_search_name으로 매핑 void CName. Card. View: : On. Seekname() { CIDD_SNAME *pdlg=new CIDD_SNAME; if( pdlg->Do. Modal()==IDOK) { m_p. Set->m_str. Filter. Format("name='%s'", pdlg->m_search_name); m_p. Set->Requery(); Update. Data(FALSE); } }
- Slides: 12