Как работать с atl ole db consumer?
Добавлено: 17 ноя 2004, 07:12
Добрый день всем!
Подскажите пожалуйста (или дайте ссылку) как работать с классом atl ole db consumer,т.е. читать и модифицировать наборы данных?
Я вставил такой класс:
[
db_source(L"Provider=MSDASQL.1;Persist Security Info=False;Data Source=mydsn;Extended Properties=\"DSN=mydsn\""),
db_table(L"DBA.testgr")
]
class CDBAtestgr1
{
public:
[ db_column(1, status=m_dwxStatus, length=m_dwxLength) ] double m_x;
[ db_column(2, status=m_dwyStatus, length=m_dwyLength) ] double m_y;
DBSTATUS m_dwxStatus;
DBSTATUS m_dwyStatus;
DBLENGTH m_dwxLength;
DBLENGTH m_dwyLength;
void GetRowsetProperties(CDBPropSet* pPropSet)
{
pPropSet->AddProperty(DBPROP_CANFETCHBACKWARDS, true, DBPROPOPTIONS_OPTIONAL);
pPropSet->AddProperty(DBPROP_CANSCROLLBACKWARDS, true, DBPROPOPTIONS_OPTIONAL);
pPropSet->AddProperty(DBPROP_IRowsetChange, true, DBPROPOPTIONS_OPTIONAL);
pPropSet->AddProperty(DBPROP_UPDATABILITY, DBPROPVAL_UP_CHANGE | DBPROPVAL_UP_INSERT | DBPROPVAL_UP_DELETE);
}
};
Затем пытаюсь сделать так
...
...
...
HRESULT hr;
CoInitialize(NULL);
CDBAtestgr1 aaa;
if(SUCCEEDED(aaa.OpenDataSource()))
{
CDBPropSet propset(DBPROPSET_ROWSET);
CDBAtestgr1 bbb;
bbb.GetRowsetProperties(&propset);
bbb.m_x=5;
bbb.m_y=6;
hr=bbb.Insert();
hr=bbb.Update ();
}
CoUninitialize();
...
...
...
На строке hr=bbb.Insert() выдаётся ошибка E_NOINTERFACE.
Заранее большое спасибо!!!
Подскажите пожалуйста (или дайте ссылку) как работать с классом atl ole db consumer,т.е. читать и модифицировать наборы данных?
Я вставил такой класс:
[
db_source(L"Provider=MSDASQL.1;Persist Security Info=False;Data Source=mydsn;Extended Properties=\"DSN=mydsn\""),
db_table(L"DBA.testgr")
]
class CDBAtestgr1
{
public:
[ db_column(1, status=m_dwxStatus, length=m_dwxLength) ] double m_x;
[ db_column(2, status=m_dwyStatus, length=m_dwyLength) ] double m_y;
DBSTATUS m_dwxStatus;
DBSTATUS m_dwyStatus;
DBLENGTH m_dwxLength;
DBLENGTH m_dwyLength;
void GetRowsetProperties(CDBPropSet* pPropSet)
{
pPropSet->AddProperty(DBPROP_CANFETCHBACKWARDS, true, DBPROPOPTIONS_OPTIONAL);
pPropSet->AddProperty(DBPROP_CANSCROLLBACKWARDS, true, DBPROPOPTIONS_OPTIONAL);
pPropSet->AddProperty(DBPROP_IRowsetChange, true, DBPROPOPTIONS_OPTIONAL);
pPropSet->AddProperty(DBPROP_UPDATABILITY, DBPROPVAL_UP_CHANGE | DBPROPVAL_UP_INSERT | DBPROPVAL_UP_DELETE);
}
};
Затем пытаюсь сделать так
...
...
...
HRESULT hr;
CoInitialize(NULL);
CDBAtestgr1 aaa;
if(SUCCEEDED(aaa.OpenDataSource()))
{
CDBPropSet propset(DBPROPSET_ROWSET);
CDBAtestgr1 bbb;
bbb.GetRowsetProperties(&propset);
bbb.m_x=5;
bbb.m_y=6;
hr=bbb.Insert();
hr=bbb.Update ();
}
CoUninitialize();
...
...
...
На строке hr=bbb.Insert() выдаётся ошибка E_NOINTERFACE.
Заранее большое спасибо!!!