반응형



  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. }  


문제 발생시 지나치지 마시고 댓글 남겨주시면 가능한 빨리 답장드립니다.


제가 쓴 책도 한번 검토해보세요 ^^

+ Recent posts