Как исправить _pRecordset не открывается ADO C ++ - PullRequest
0 голосов
/ 26 марта 2019

Я пытаюсь подключить свой проект C ++ к SQL Server с помощью ADO, он проходит задолго до pRecordset->Open(...);, и при возникновении ошибки появляется сообщение Microsoft C++ exception: _com_error at memory location'.

я пытался делать такие вещи pRecordset->Open(SelectQuery, _variant_t(pConnection, true),adOpenForwardOnly, adLockReadOnly, adCmdText); но в окне отладки он показывает _hr: DB_E_NOTABLE Table Does not exist. я тоже пытался делать такие вещи pRecordset->Open("TestTB", _variant_t(pConnection, true),adOpenForwardOnly, adLockReadOnly, adCmdTable); но это не помогает.

Это проблема с подключением? было бы очень полезно для меня, если вы дадите мне несколько советов. Заранее спасибо.

_ConnectionPtr pConnection;
_CommandPtr pCommand;
_RecordsetPtr pRecordset;

_bstr_t strCon("ADOSQL");  //"Provider=sqloledb; Data Source=...\\SQLEXPRESS;Initial Catalog=TestDB;Integrated Security=True");

_bstr_t SelectQuery("Select * from TestTB");

HRESULT hr = S_OK;
CoInitialize(NULL);

//Create the Connection pointer
hr = pConnection.CreateInstance(__uuidof(Connection));
if (FAILED(hr))
{
    printf("Error instantiating Connection objectn");
}

//Open the SQL Server connection
hr = pConnection->Open(strCon, "", "", adConnectUnspecified);
if (FAILED(hr))
{
    printf("Error Opening Database object using ADO _ConnectionPtr n");
}

hr = pCommand.CreateInstance(__uuidof(Command));
if (FAILED(hr))
{
    printf("Error creating command instance[]");
}

pCommand->ActiveConnection = pConnection;
pCommand->CommandText = SelectQuery;
pCommand->CommandType = adCmdText;

hr = pRecordset.CreateInstance(__uuidof(Recordset));
if (FAILED(hr))
{
    printf("Failed creating record set instancen");
}

//CString SQLQuery = "Select * From TestTB";
pRecordset->Open(_variant_t(pCommand), _variant_t(pConnection, true),adOpenForwardOnly, adLockReadOnly, adCmdText);
...