crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )


  Ответ в Кросплатформенное получение списка всех источников данных доступных через ODBC
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
 

Опции сообщения
 Включить смайлы?
Иконки сообщения
(Опционально)
                                
                                
  [ Без иконки ]
 


Последние 10 сообщений [ в обратном порядке ]
ViGOur Дата 11.2.2008, 10:29
  Вот, но для него требуется задать hWnd, иначе не работает, может быть и можно как-то побороть, но я не пробовал.
    #define MAXBUFLEN   255
    HENV   hEnv = SQL_NULL_HENV;
    HDBC   hDbc;
    RETCODE rc = 0;

    SQLCHAR      ConnStrIn[MAXBUFLEN] = "";
    SQLCHAR      ConnStrOut[MAXBUFLEN] = "";
    SQLSMALLINT   cbConnStrOut = 0;
    UWORD wConnectOption = SQL_DRIVER_COMPLETE;

    rc = SQLAllocEnv(&hEnv);

    if( !(SQL_SUCCESS == rc) || (SQL_SUCCESS_WITH_INFO == rc))
    {
        printf("SQLAllocEnv failed: Error # %#x\n", rc);
        exit(-1);
    }

    rc = SQLAllocConnect(hEnv, &hDbc);
    if( !(SQL_SUCCESS == rc) || (SQL_SUCCESS_WITH_INFO == rc))
    {
        printf("SQLAllocConnect failed: Error # %#x\n", rc);
        exit(-1);
    }

    int nRet = ::SQLSetConnectOption( hDbc, SQL_LOGIN_TIMEOUT, 15);
    SQLRETURN retcode = SQLDriverConnect( hDbc, hWnd,
                                          ConnStrIn, SQL_NTS,
                                          ConnStrOut, MAXBUFLEN,
                                          &cbConnStrOut, wConnectOption);


    SQLCHAR*    theDiagState = new SQLCHAR[50];
    SQLINTEGER    theNativeState;
    SQLCHAR*    theMessageText  = new SQLCHAR[255];
    SQLSMALLINT    iOutputNo;

    // здесь получаем описание ошибки, если она есть
    SQLGetDiagRec( SQL_HANDLE_DBC, hDbc,
                   1, (SQLCHAR*)theDiagState, &theNativeState,
                   (SQLCHAR*)theMessageText, 100,
                   &iOutputNo);
             printf( "Error :%s\n", theMessageText);
Соответственно нужно добавить обработку ошибок и прочее... ;)
Litkevich Yuriy Дата 9.2.2008, 21:01
  Подскажи как для винды, желательно чистый WinAPI, не MFC т.е.
ViGOur Дата 9.2.2008, 20:50
  Я знаю как это получить на WinAPI и MFC (в котором используется тоже API), но вот на кроссплатформенное получение интересно было бы посмотреть тоже. :)

p.s. если не найдешь кроссплатформенный способ, могу подсказать как для винды такое сделать.
Litkevich Yuriy Дата 9.2.2008, 15:51
  подскажите есть ли возможность, сохранив кросплатформенность, получить список всех источников данных доступных через ODBC?
Т.е. для случая с Виндовозом, получить тот же список БД , который мы видим в "Панель управления"->"Администрирование"->"Источники данных ODBC" , в частности интерисует то, что на вкладке "Системный DSN".
Просмотр темы полностью (откроется в новом окне)
RSS Текстовая версия Сейчас: 29.3.2024, 2:21