C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 Здравствуйте, гость ( Вход | Регистрация )   Скачать форум | Поиск по Форуму | Участники | Помощь
 Поиск по:   сайтy   
   архиву форума   
  ОтветитьНовая тема
Работа с БД через ADO, помогите начать
« предыдущая тема | следующая тема » Подписаться на тему | Отправить тему на E-mail | Распечатать тему
Smile
Отправлено: 07.12.2009, 17:43 Цитировать


Ученик-кочегар


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



Доброго времени суток!
Имеется класс написанный на VC++, хочу перевести его на Builder. Помогите, пожалуйста, это сделать. В VC++ использовал ADODB, подключив библиотеку так
CODE

#import "C:\Program Files\Common Files\System\ado\msado15.dll" no_namespace rename("EOF","EoF")

В Builder такое не прошло. Пришлось импортировать библиотеку через Project->Import Type Library, который создал Unit библиотеки Microsoft ActiveX Data Object 2.8 Library и подключил его к моему проекту.
Написал три строки:
CODE

_ConnectionPtr m_pConnection;
m_pConnection.CreateInstance(__uuidof(Connection));
m_pConnection->Open(L"Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=baza;Data Source=server", L"", L"", (adConnectUnspecified));

Прошелся пошагово с заходом в функции. На второй строке попадаю в хедер utilcls.h:
CODE

// Create instance of interface via 'CoCreateInstance' with specified CLSID
//
template <class T, const IID* piid>
HRESULT TComInterface<T, piid>::CreateInstance(const CLSID& clsid, IUnknown* pOuter, DWORD dwClsContext)
{
 Reset();  // Free any interface pointers
 IUnknownPtr punk;
 HRESULT hr = ::CoCreateInstance(clsid, pOuter, dwClsContext, IID_IUnknown, reinterpret_cast<LPVOID*>(&punk));
 if (SUCCEEDED(hr))
 {
   hr = ::OleRun(punk);
   if (SUCCEEDED(hr))
     hr = punk->QueryInterface(GetIID(), reinterpret_cast<LPVOID*>(&intf));
 }
 return hr;
}

Функция CoCreateInstance не выполняеться успешно. И OleRun не выполняется.
И на третьей строке вылетает. Да, предварительно делал CoInitialize. А на VC++ это идет на ура.
Подскажите, кто знает, как работать с БД из Builder'а через ADO, но без VCL. Дайте ссылку на примерчик или направте куда рыть. Спасибо.
 
Послать сообщение E-mail адрес  Top
0 ответов с: 07.12.2009, 17:43 Подписаться на тему | Отправить тему на E-mail | Распечатать тему

Back to Работа с базами данных в C++Builder
ОтветитьНовая тема