ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • OLE DB를 이용해 MSSQL DB사용하는 예제 소스 코드
    MFC 2015. 9. 3. 20:09



    1. #include <atldbcli.h>  
    2. #include <iostream>  
    3.   
    4. using namespace std;  
    5.   
    6.   
    7.   
    8. class state  
    9. {  
    10. public:  
    11.     //데이터를 저장할 자료형 선언     
    12.     char ip[20];  
    13.     char date[20];  
    14.     char time[20];  
    15.   
    16.     //데이터베이스의 컬럼과 위치를 맞춤  
    17.     BEGIN_COLUMN_MAP(state)  
    18.         COLUMN_ENTRY(1, ip)  
    19.         COLUMN_ENTRY(3, date)  
    20.         COLUMN_ENTRY(4, time)  
    21.     END_COLUMN_MAP()  
    22. };  
    23.   
    24.   
    25.   
    26. //OLEDB 객체 선언  
    27. CDataSource ds;  
    28. CSession    session;  
    29. CCommand <CAccessor<state> > cust;  
    30.   
    31.   
    32.   
    33.   
    34. int main()  
    35. {  
    36.   
    37.     try {  
    38.           
    39.         //COM 초기화  
    40.         HRESULT hr = CoInitialize(0);  
    41.         if (FAILED(hr))  
    42.         {  
    43.             cout << "COM 초기화 할 수 없습니다." << endl;  
    44.             return -1;  
    45.         }  
    46.   
    47.   
    48.         //데이터베이스 연결  
    49.         CDBPropSet dbinit(DBPROPSET_DBINIT);  
    50.         dbinit.AddProperty(DBPROP_INIT_PROMPT, (SHORT)4);  
    51.         dbinit.AddProperty(DBPROP_INIT_PROVIDERSTRING, OLESTR("PROVIDER=SQLOLEDB.1;SERVER=DB아이피주소;UID=아이디;PWD=패스워드;DATABASE=데이터베이스이름"));  
    52.         dbinit.AddProperty(DBPROP_INIT_LCID, (LONG)1043); //->Locale identifier  
    53.         hr = ds.Open(_T("SQLOLEDB"), &dbinit);  
    54.         if (FAILED(hr))  
    55.         {  
    56.             cout << "데이터 베이스를 열 수 없습니다." << endl;  
    57.             return -1;  
    58.         }  
    59.   
    60.   
    61.         //세션을 시작합니다.  
    62.         hr = session.Open(ds);  
    63.         if (FAILED(hr))  
    64.         {  
    65.             cout << "SESSION을 시작할 수 없습니다." << endl;  
    66.             ds.Close();  
    67.             return -1;  
    68.         }  
    69.   
    70.           
    71.         //사용할 쿼리문을 문자열로 만들어 둠.  
    72.         char mySQL[] = "SELECT *  FROM state";  
    73.   
    74.   
    75.         //쿼리문을 실행한다.  
    76.         hr = cust.Open(session, mySQL);  
    77.         if (FAILED(hr))  
    78.         {  
    79.             cout << "쿼리문을 수행할 수 없습니다." << endl;  
    80.             session.Close();  
    81.             ds.Close();  
    82.             return -1;  
    83.         }  
    84.   
    85.   
    86.         //읽어온 데이터를 화면에 출력한다.  
    87.         while (cust.MoveNext() == S_OK)  
    88.         {  
    89.             cout << cust.ip << ", " << cust.date << ", " << cust.time << endl;  
    90.         }  
    91.   
    92.         cust.Close();  
    93.         session.Close();  
    94.         ds.Close();  
    95.   
    96.   
    97.         return 1;  
    98.     }  
    99.     catch (...)  
    100.     {  
    101.         cout << "알 수 없는 에러 발생" << endl;  
    102.         return -1;  
    103.     }  
    104. }  


    포스트 작성시에는 문제 없었지만 이후 문제가 생길 수 있습니다.
    댓글로 알려주시면 빠른 시일내에 답변을 드리겠습니다.

    여러분의 응원으로 좋은 컨텐츠가 만들어집니다. 지금 본 내용이 도움이 되었다면 유튜브 구독 부탁드립니다. 감사합니다 : )

    유튜브 구독하기


    TAG

    댓글 0

Designed by Tistory.