- 연결
- SQLAllocHandle(SQL_HANDLE_DBC, COdbcEnv::GetHandle(), &hdbc)
- // 네트워크 불안정 시 select() 또는 poll() 에서 발생할 수 있는 blocking을 방지하기 위한 timeout 값 설정
SQLSetConnectAttr(hdbc, SQL_ATTR_CONNECTION_TIMEOUT, reinterpret_cast<SQLPOINTER>(ODBC_TIMEOUT), SQL_IS_UINTEGER) - // ODBC연결
SQLConnect(hdbc, reinterpret_cast<SQLCHAR*>(szDSN), SQL_NTS,
reinterpret_cast<SQLCHAR*>(szUsr), SQL_NTS,
reinterpret_cast<SQLCHAR*>(szPwd), SQL_NTS) - // STMT 할당
SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt) - // 퀘리 타임아웃 설정.
DWORD dwQueryTimeOut = ODBC_TIMEOUT; // ODBC_TIMEOUT = 20
SQLSetStmtAttr(hstmt, SQL_ATTR_QUERY_TIMEOUT, reinterpret_cast<SQLPOINTER>(dwQueryTimeOut), SQL_IS_UINTEGER)
- Bind 바인드
- SQLBindCol(hstmt, col, type, buf, bufLen, &Len))
- 트랜젠션 시작
- // 오토 커밋 비활성화
SQLSetConnectAttr( hdbc, SQL_ATTR_AUTOCOMMIT, (SQLPOINTER)SQL_AUTOCOMMIT_OFF, 0 )
- 쿼리 설정
- SQLExecDirect(hstmt, szQuery, SQL_NTS)
- Commit or Rollback
- Commit
- SQLEndTran(SQL_HANDLE_DBC, hdbc, SQL_COMMIT)
- Rollback
- SQLEndTran(SQL_HANDLE_DBC, hdbc, SQL_ROLLBACK)
- 리셋
- // 오토커밋 설정
SQLSetConnectAttr( hdbc, SQL_ATTR_AUTOCOMMIT, (SQLPOINTER)SQL_AUTOCOMMIT_ON, 0 )
- 닫기
- SQLFreeHandle(SQL_HANDLE_DBC, hstmt)
- SQLDisconnect(hdbc)
- SQLFreeHandle(SQL_HANDLE_DBC, hdbc)
ODBC 프로그래밍
- ODBC 프로그래밍 2009.10.26 1
ODBC 프로그래밍
2009. 10. 26. 18:21