Поиск:

Ответ в темуСоздание новой темы Создание опроса
> ODBC, Список доступных источников данных 
:(
    Опции темы
Гость_vasya
Дата 7.10.2005, 16:13 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Народ подскажите пожалуйста! Как получить список ODBC источников данных?
Или как проверить, если у меня есть имя источника данных ( char* pStr ), есть ли источник с таким именем в системе? smile smile smile
  Вверх
chaos
Дата 7.10.2005, 17:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Серийный программист
****


Профиль
Группа: Завсегдатай
Сообщений: 2979
Регистрация: 7.7.2004
Где: Екатеринбург

Репутация: 2
Всего: 44



если я тебя правельно понял то тебе поможет это
(кусок кода из моей программы)
Код

void CFinishPage::FillDrvList()
{
    while (LB_ERR != m_oDrvList.DeleteString(0));

    CString soSubKey = "SOFTWARE\\ODBC\\ODBCINST.INI";
    DWORD dwIndex = 0, dwSizeBuf, dwType1, dwType2 = REG_SZ, dwSizeData1, dwSizeData2;
    HKEY hKey1, hKey2;
    char *szBuf = new char[MAX_PATH];
    BYTE *szData1 = new BYTE[MAX_PATH];
    BYTE *szData2 = new BYTE[MAX_PATH];

    if (ERROR_SUCCESS == RegOpenKeyEx(HKEY_LOCAL_MACHINE, 
                                        soSubKey + "\\ODBC Drivers",
                                        NULL, KEY_ALL_ACCESS, &hKey1))
    {
        while (ERROR_SUCCESS == RegEnumValue(hKey1, dwIndex, szBuf, 
                                            &dwSizeBuf, NULL, 
                                            &dwType1, szData1, &dwSizeData1))
        {
            if (ERROR_SUCCESS == RegOpenKeyEx(HKEY_LOCAL_MACHINE, 
                                            soSubKey + CString("\\") + szBuf, 
                                            NULL, KEY_ALL_ACCESS, 
                                            &hKey2))
            {
                if (ERROR_SUCCESS == RegQueryValueEx(hKey2, 
                                                    "FileExtns", NULL, 
                                                    &dwType2, 
                                                    szData2, &dwSizeData2))
                    m_oDrvList.AddString(szBuf);
                RegCloseKey(hKey2);
            }

            dwIndex++;
            dwSizeBuf = MAX_PATH;
            dwSizeData2 = MAX_PATH;
        }
        RegCloseKey(hKey1);
    }

    delete[] szBuf;
    delete[] szData1;
    delete[] szData2;
}



правда надо немного подшаманить)))

Это сообщение отредактировал(а) chaos - 8.10.2005, 19:36
PM WWW   Вверх
threef
Дата 21.2.2006, 12:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 375
Регистрация: 27.10.2005
Где: Запорожье

Репутация: нет
Всего: 10



Это список драйверов. А где взять список зарегистрированных источников ?( User DSN, System DSN ?)

Это сообщение отредактировал(а) threef - 21.2.2006, 12:22
PM MAIL   Вверх
bas
Дата 21.2.2006, 14:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 446
Регистрация: 14.8.2002
Где: Молдова, Кишинев

Репутация: нет
Всего: 2



Цитата(threef @ 21.2.2006, 12:20 Найти цитируемый пост)
User DSN

Common Files\ODBC\Data Sources\

Цитата(threef @ 21.2.2006, 12:20 Найти цитируемый пост)
System DSN

В реестре.
PM MAIL   Вверх
threef
Дата 21.2.2006, 20:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 375
Регистрация: 27.10.2005
Где: Запорожье

Репутация: нет
Всего: 10



Спасибо, уже нашел, немного подшаманил:
Код

    while (LB_ERR != m_oDrvList.DeleteString(0));

    CString soSubKey = "SOFTWARE\\ODBC\\ODBC.INI";
    DWORD dwIndex = 0, dwSizeBuf, 
        dwType2 = REG_SZ,dwSizeData2;
    HKEY hKey1, hKey2;
    char *szBuf = new char[MAX_PATH];
    BYTE *szData2 = new BYTE[MAX_PATH];
    FILETIME ftime;

    if (ERROR_SUCCESS == 
        RegOpenKeyEx(HKEY_CURRENT_USER,soSubKey,
             NULL, KEY_ALL_ACCESS, &hKey1))
    {
        while (ERROR_SUCCESS == 
            RegEnumKey(hKey1, dwIndex, szBuf, dwSizeBuf))
        {
            
           if (ERROR_SUCCESS == 
               RegOpenKeyEx(HKEY_CURRENT_USER, 
               soSubKey + CString("\\") + szBuf, 
               NULL, KEY_ALL_ACCESS,&hKey2))
            {
              if (ERROR_SUCCESS == RegQueryValueEx(hKey2, 
                                                    "Driver", NULL, 
                                                    &dwType2, 
                                                    szData2, &dwSizeData2))
                m_oDrvList.AddString(szBuf);
                    RegCloseKey(hKey2);
            }
            
            dwIndex++;
            dwSizeBuf = MAX_PATH;
            dwSizeData2 = MAX_PATH;
        }
        RegCloseKey(hKey1);
    }

    delete[] szBuf;
    delete[] szData2;

Скопировано у chaos
PM MAIL   Вверх
КУБ
Дата 9.8.2006, 16:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 87
Регистрация: 5.6.2006
Где: Украина, Донецк

Репутация: нет
Всего: нет



А как программно зарегистрировать источник данных ? ( User DSN)  smile 
PM MAIL   Вверх
bas
Дата 9.8.2006, 17:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 446
Регистрация: 14.8.2002
Где: Молдова, Кишинев

Репутация: нет
Всего: 2



Создать в \Common Files\ODBC\Data Source\ файл с расширением dsn.

Цитата

[ODBC]
DRIVER=Microsoft dBase VFP Driver (*.dbf)
UID=
Deleted=Yes
Null=Yes
Collate=Machine
BackgroundFetch=Yes
Exclusive=No
SourceType=DBF
SourceDB=e:\TMP

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C++: Базы данных"
chipset

Данный форум предназначен для обсуждения вопросов прямым образом связанных с C++ и БД. Так, вопросы только по C++ следует задавать в C++:Общие вопросы а вопросы по абстрактным БД в Базах данных или в соответствующих под-форумах.

Благодарим за понимание.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, chipset.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Базы данных | Следующая тема »


 




[ Время генерации скрипта: 0.1874 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.