crossplatform.ru

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

 
Ответить в данную темуНачать новую тему
> OLE DB провайдеры
a_goodgirl
  опции профиля:
сообщение 30.6.2010, 13:34
Сообщение #1


Студент
*

Группа: Участник
Сообщений: 35
Регистрация: 4.6.2009
Пользователь №: 801

Спасибо сказали: 0 раз(а)




Репутация:   0  


Нужно получить список OLE BD провайдеров в системе:
вот такую ссылку удалось нагуглить:
http://www.sql.ru/forum/actualthread.aspx?tid=714578

Там используется OleDbEnumerator.

Честно говоря, ничего не понятно. Как использовать это в С++? (или может быть можно получить список OLE BD провайдеров с помощью Qt)?

цель получения списка провайдеров OLEDB в том числе такая:

в частности, для ACCESS есть формат mdb для старого (2003) и accdb (2007). Для них используются разные провайдеры в connection string.
Microsoft.Jet.OLEDB.4.0
Microsoft.ACE.OLEDB.12.0

Алгоритм такой:
- получаем список провайдеров
- если выбран тип ACCESS, в зависимости от наличия провайдеров, формируется фильтр для выбора файлов (mdb или mdb, accdb)
- более новый провайдер добавляется в строку connection string.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
a_goodgirl
  опции профиля:
сообщение 30.6.2010, 15:30
Сообщение #2


Студент
*

Группа: Участник
Сообщений: 35
Регистрация: 4.6.2009
Пользователь №: 801

Спасибо сказали: 0 раз(а)




Репутация:   0  


жаль, что никто не ответил. на гугленье ушло полдня, однако результат есть!

#include <atlbase.h>
#include <atldbcli.h>  

QStringList OLEDBproviders()
  {
    QStringList list;
    CoInitialize(NULL);
    {
      CEnumerator rs;
      rs.Open();
      while (rs.MoveNext() == S_OK)
        list << QString::fromUtf16(rs.m_szName);
    }
    CoUninitialize();
    return list;
  };
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 22.1.2021, 3:09