DataBase

ODBC 드라이버 리스트 출력하기

izen8 2011. 12. 14. 12:32
반응형

ODBC 드라이버 리스트 출력하기

 

ODBC 드라이버 문자열을 작성하던 중, 오래 전에 개발한 백업박사 서버 소스 코드에서 ODBC 드라이버 리스트를 출력하는 부분이 있어서 이를 DOS 실행 프로그램으로 만들어 보았습니다. ODBC 드라이버 문자열을 출력하는 프로그램 소스 코드는 아래와 같습니다.

 

 

01: #include <stdio.h>
02: #include <windows.h>
03: #include <odbcinst.h>
04: 
05: /* 본 프로그램을 실행하면 아래와 같이 출력된다.
06: 
07: [1] [SQL Server]
08: [2] [Microsoft Access Driver (*.mdb)]
09: [3] [Microsoft Text Driver (*.txt; *.csv)]
10: [4] [Microsoft Excel Driver (*.xls)]
11: [5] [Microsoft dBase Driver (*.dbf)]
12: [6] [Microsoft Paradox Driver (*.db )]
13: [7] [Microsoft Visual FoxPro Driver]
14: [8] [Microsoft FoxPro VFP Driver (*.dbf)]
15: [9] [Microsoft dBase VFP Driver (*.dbf)]
16: [10] [Microsoft Access-Treiber (*.mdb)]
17: [11] [Microsoft Text-Treiber (*.txt; *.csv)]
18: [12] [Microsoft Excel-Treiber (*.xls)]
19: [13] [Microsoft dBase-Treiber (*.dbf)]
20: [14] [Microsoft Paradox-Treiber (*.db )]
21: [15] [Microsoft Visual FoxPro-Treiber]
22: [16] [Driver do Microsoft Access (*.mdb)]
23: [17] [Driver da Microsoft para arquivos texto (*.txt; *.csv)]
24: [18] [Driver do Microsoft Excel(*.xls)]
25: [19] [Driver do Microsoft dBase (*.dbf)]
26: [20] [Driver do Microsoft Paradox (*.db )]
27: [21] [Driver para o Microsoft Visual FoxPro]
28: [22] [Microsoft ODBC for Oracle]
29: [23] [MySQL ODBC 3.51 Driver]
30: [24] [Microsoft FoxPro Driver (*.dbf)]
31: 
32: */
33: 
34: int main( int argc, char * argv[] )
35: {
36:   char  szBuf[2001];
37:   int   iDriverCount = 0, i;
38:   WORD  iBufOut;
39: 
40:   // ODBC 드라이버 리스트를 출력한다.
41:   memset( szBuf, 0, sizeof(szBuf) );
42:   if( !SQLGetInstalledDrivers( szBuf, sizeof(szBuf)-1, &iBufOut) )
43:   {
44:     printf( "SQLGetInstalledDrivers error\n" );
45:     return -1;
46:   }
47:   else
48:   {
49:     char  szDriver[255];
50:     int   j, iDriverLen;
51: 
52:     iDriverLen = sizeof(szDriver) - 1;
53:     memset( szDriver, 0, sizeof(szDriver) );
54:     for( i = 0, j = 0; i < iBufOut; i++ )
55:     {
56:       if( szBuf[i] == '\0' ) 
57:       {
58:         if( strlen(szDriver) > 0 )
59:         {
60:           ++iDriverCount;
61:           printf( "[%d] [%s]\n", iDriverCount, szDriver );
62:         }
63: 
64:         j = 0;
65:         memset( szDriver, 0, sizeof(szDriver) );
66:       }
67:       else if( iDriverLen > j )
68:       {
69:         szDriver[j++] = szBuf[i];
70:       }
71:     }
72:   }
73: 
74:   return 0;
75: }

 

반응형