티스토리 뷰
목표 : 대화상자 기반으로 ADO를 활용하여 DB와 연동하기
소주제 : ADO 사용하여 DB 연결 시 List Control 핸들하기(컬럼 개수파악해서 표시)
Visual Studio 2012
1. Flag용 변수 추가 및 초기화
// Dialog1.h // CDialog1 대화 상자입니다. class CDialog1 : public CDialogEx { ... private: int m_ColumnIdx; //테이블 컬럼 인덱스 char m_ColumnName[10][100]; //테이블 컬럼명 BOOL isReadOnce; //처음 연결 Flag ... }
// Dialog1.cpp : 구현 파일입니다. // //변수 초기화 CDialog1::CDialog1(CWnd* pParent /*=NULL*/) : CDialogEx(CDialog1::IDD, pParent) { m_ColumnIdx=0; isReadOnce=FALSE; }
2. OnInitDialog()에 설정했던 m_ctrList.InsertColumn 구문 지우기.
3. DB컬럼 읽고 리스트 컨트롤에 컬럼 추가하는 함수 구현
void CDialog1::dbReadColumn(void) { //테이블 student 에 생성된 컬럼 명 읽기 m_Adodb.m_pComm->CommandText = "select COLUMN_NAME from information_schema.columns where table_name = 'student';"; try { m_Adodb.m_pRs = m_Adodb.m_pComm->Execute(NULL,NULL, adCmdText); } catch (...) { MessageBox("Column index 조회오류!", "ADO DB",MB_ICONSTOP); return; } // 결과가 존재하지 않음 if (m_Adodb.m_pRs->adoEOF) { m_Adodb.m_pRs->Close(); // 레코드셋을 닫는다.(항상 레코드셋 오픈 후엔 닫아주는 작업을 수행해야 합니다.) MessageBox("조회할 데이터가 없습니다", "ADO DB", MB_ICONINFORMATION); return; } while(!m_Adodb.m_pRs->adoEOF) { //DB에서 해당 필드를 읽어들임 _variant_t Field_ColumnName = m_Adodb.m_pRs->Fields->GetItem("COLUMN_NAME")->GetValue(); // 저장된 variant변수를 조작이 편한 char변수에 복사합니다. if(m_ColumnIdx<10) //컬럼 갯수는 10개로 제한 strcpy_s(m_ColumnName[m_ColumnIdx++], (char*)((_bstr_t)Field_ColumnName)); m_Adodb.m_pRs->MoveNext(); // 레코드셋을 다음으로 이동시킵니다. } //List Control에 컬럼 추가 for (int i=0; i < m_ColumnIdx; i++) { m_ctrList.InsertColumn(i,m_ColumnName[i], LVCFMT_LEFT, 50); } }
4. DB연결 버튼 클릭 함수 수정
void CDialog1::OnBnClickedBtnConnect() { // TODO: 여기에 컨트롤 알림 처리기 코드를 추가합니다. if(m_Adodb.isConnected==false) { if(m_Adodb.InitDB("sa", "dbtest", "127.0.0.1","dbTest","1433") == FALSE) { MessageBox("디비접속에러","ADO DB",MB_ICONSTOP); return; } else { MessageBox("연결 성공!"); //처음 연결 될 시에만 확인 if(isReadOnce==FALSE) { CDialog1::dbReadColumn(); isReadOnce=TRUE; } } SetDlgItemText(IDC_BTN_CONNECT,"DB 연결 해제"); } else { // db연결 해제 m_Adodb.ReleaseDB(); SetDlgItemText(IDC_BTN_CONNECT,"DB 연결"); m_ctrList.DeleteAllItems(); } }
* 테스트!
0
'Programming > MFC(C++)' 카테고리의 다른 글
[MFC] SQLITE3 연동하기 (db 생성) (0) | 2018.07.05 |
---|---|
[MFC] 대화상자 기반 ADO 사용하기 - 4 (0) | 2018.07.04 |
[MFC] 컨트롤 캡션 개행 방법 (0) | 2018.07.04 |
[MFC] 다이얼로그 Style 속성 (Overlapped, Popup, Child) 차이 (0) | 2018.07.03 |
[MFC] 대화상자 기반 ADO 사용하기 - 2 (5) | 2018.07.03 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- MFC ADO
- c++
- MFC Modeless
- sqlite3
- 스쿠트항공 환불받기
- Modeless
- 모달리스 다이얼로그
- SendMessage
- 청년내일채움공제
- ADO
- 소켓
- 부가가치세전산매체
- Sticky Notes Loading
- ADODB
- 스티커메모로드중
- CMFCBUTTON
- MSSQL
- 청년내일채움공제 만기신청
- #자동업데이트
- 항공알파벳
- 모달리스
- 세금계산서합계표양식
- 전자신고파일설명서
- MFC
- 프로세스이름변경
- MXCOMPONENT
- 부가가치세
- 전자신고변환
- 해외송금확인
- 법정동코드
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |
글 보관함