O
olegO
Не знаю тот ли раздел я выбрал, чтобы отпи аться, но да пусть будет этот. Есть следуйщий код:
#include "stdafx.h"
#import "C:\Program Files\Common Files\System\ADO\msado15.dll" no_namespace,rename("EOF", "EndOfFile")
#import "C:\Program Files\Common Files\System\ole db\Oledb32.dll"
#include <iostream>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
HRESULT hr;
CoInitialize(NULL);
_ConnectionPtr connection;
hr = connection.CreateInstance(__uuidof(Connection));
_RecordsetPtr recordset;
hr = recordset.CreateInstance(__uuidof(Recordset));
_bstr_t bsConnString=(L"Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=false;Data Source=C:\\bd.mdb");
_bstr_t bsUserID="";
_bstr_t bsUserPwd="";
connection->Open(bsConnString, bsUserID, bsUserPwd, adConnectUnspecified);
VARIANT in;
in.vt=VT_I4;
in.intVal=0;
_bstr_t bsCommand="SELECT * FROM buyers";
//recordset=connection->Execute(bsCommand, &in, adCmdText);
recordset->Open(bsCommand,connection.GetInterfacePtr(),adOpenForwardOnly, adLockReadOnly,adCmdText);
cout << recordset->Fields->Count;
cout << recordset->RecordCount << endl;
//cout << recordset->Fields->Item[1]->Name;
connection->Close();
return 0;
}
База подключается, видит количество полей, а вот записи не видит и при выводе их количества выдает -1; в хелпере написано, что в этом случае либо драйвер не тот, либо путаница с курсорами. Перепробовал все, что только можно. При вызове любой функции, обращающейся к Fields выходит ошибка. Что может быть?
#include "stdafx.h"
#import "C:\Program Files\Common Files\System\ADO\msado15.dll" no_namespace,rename("EOF", "EndOfFile")
#import "C:\Program Files\Common Files\System\ole db\Oledb32.dll"
#include <iostream>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
HRESULT hr;
CoInitialize(NULL);
_ConnectionPtr connection;
hr = connection.CreateInstance(__uuidof(Connection));
_RecordsetPtr recordset;
hr = recordset.CreateInstance(__uuidof(Recordset));
_bstr_t bsConnString=(L"Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=false;Data Source=C:\\bd.mdb");
_bstr_t bsUserID="";
_bstr_t bsUserPwd="";
connection->Open(bsConnString, bsUserID, bsUserPwd, adConnectUnspecified);
VARIANT in;
in.vt=VT_I4;
in.intVal=0;
_bstr_t bsCommand="SELECT * FROM buyers";
//recordset=connection->Execute(bsCommand, &in, adCmdText);
recordset->Open(bsCommand,connection.GetInterfacePtr(),adOpenForwardOnly, adLockReadOnly,adCmdText);
cout << recordset->Fields->Count;
cout << recordset->RecordCount << endl;
//cout << recordset->Fields->Item[1]->Name;
connection->Close();
return 0;
}
База подключается, видит количество полей, а вот записи не видит и при выводе их количества выдает -1; в хелпере написано, что в этом случае либо драйвер не тот, либо путаница с курсорами. Перепробовал все, что только можно. При вызове любой функции, обращающейся к Fields выходит ошибка. Что может быть?