Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум на CrossPlatform.RU _ Qt Разработка баз данных _ OLE DB провайдеры

Автор: a_goodgirl 30.6.2010, 13:34

Нужно получить список 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

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

#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;
  };

Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)