Как получить DATA SOURCE NAMES (DSN)
|
void GetDSN() { CWaitCursor Wait; SQLHENV henv; RETCODE RetCode; short len1,len2; CString strValue; unsigned char *ucpDSN; ucpDSN=(unsigned char*)malloc(256); unsigned char *ucpDescription ; // Содержит описание ODBC драйвера для DSN ucpDescription=(unsigned char*)malloc(256); RetCode=::SQLAllocEnv(&henv); // выделаем дескриптор окружения
if(RetCode == SQL_SUCCESS || RetCode == SQL_SUCCESS_WITH_INFO) // Если распределение успешно { while(RetCode!=SQL_NO_DATA) { // Fetch available data sources RetCode=::SQLDataSources(henv, SQL_FETCH_NEXT, ucpDSN, 256, &len1, ucpDescription , 256, &len2); if (RetCode!=SQL_NO_DATA) // Если данные существуют { strValue.Format("%s-%s",(LPCTSTR)ucpDSN,(LPCTSTR)ucpDescription); if(!strValue.IsEmpty()) AfxMessageBox(strValue); // Отображаем DSN Имена
memset(ucpDSN,'\0',sizeof(ucpDSN)); // Очищаем буфер } } }
delete ucpDescription; delete ucpDSN; ::SQLFreeEnv(henv); // free environment handle henv = NULL; } |