Я пытаюсь подключить свой проект 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);