MFC ACCESS OLEDB 数据库连接时出现session.m_spOpenRowset!=0

mho 2017-08-20 11:04:11
void CAccessViewTree::AddUsersToTree()
{
CWGSModelDoc* pDoc = (CWGSModelDoc*)GetDocument();
if (pDoc == NULL)
return;
//清空树
GetTreeCtrl().DeleteAllItems();

//取数据库中得所有记录
CString strSql = "select * from UWB";
CCommand<CAccessor<AccessSet> > dbUWB;
long* pCount = new long;
if (pDoc->m_dbUWB.m_session.m_spOpenRowset != 0)
{
pDoc->m_dbUWB.m_session.m_spOpenRowset.Release();
}
if (dbUWB.Open(pDoc->m_dbUWB.m_session, strSql, NULL, pCount) != S_OK)
{
AfxMessageBox("error");
delete pCount;
return;
}
delete pCount;

if (dbUWB.MoveFirst() == S_OK)
{
do
{
AddUserToTree(dbUWB.m_UWBNum);
} while (dbUWB.MoveNext() == S_OK);
}
dbUWB.Close();
}

class CSet : public CCommand<CAccessor<AccessSet>>
{
public:

HRESULT Open()
{
HRESULT hr;

hr = OpenDataSource();
if (FAILED(hr))
return hr;

return OpenRowset();
}
HRESULT OpenDataSource()
{


HRESULT hr;
CDataSource db;
CDBPropSet dbinit(DBPROPSET_DBINIT);

dbinit.AddProperty(DBPROP_AUTH_CACHE_AUTHINFO, true);
dbinit.AddProperty(DBPROP_AUTH_ENCRYPT_PASSWORD, false);
dbinit.AddProperty(DBPROP_AUTH_MASK_PASSWORD, false);
dbinit.AddProperty(DBPROP_AUTH_PASSWORD, OLESTR(""));
dbinit.AddProperty(DBPROP_AUTH_USERID, OLESTR("Admin"));
dbinit.AddProperty(DBPROP_INIT_DATASOURCE, OLESTR("D:\\111.mdb"));
dbinit.AddProperty(DBPROP_INIT_MODE, (long)16);
dbinit.AddProperty(DBPROP_INIT_PROMPT, (short)4);
dbinit.AddProperty(DBPROP_INIT_PROVIDERSTRING, OLESTR(""));
dbinit.AddProperty(DBPROP_INIT_LCID, (long)1033);
//dbinit.AddProperty(DBPROP_AUTH_PERSIST_SENSITIVE_AUTHINFO, false);
hr = db.Open(_T("Microsoft.Jet.OLEDB.4.0"), &dbinit);
if (FAILED(hr))
return hr;

return m_session.Open(db);
}

HRESULT OpenRowset()
{
// Set properties for open
CDBPropSet propset(DBPROPSET_ROWSET);
propset.AddProperty(DBPROP_IRowsetChange, true);
propset.AddProperty(DBPROP_UPDATABILITY, DBPROPVAL_UP_CHANGE | DBPROPVAL_UP_INSERT | DBPROPVAL_UP_DELETE);

return CCommand<CAccessor<AccessSet> >::Open(m_session, NULL, &propset);
}
CSession m_session;

};

在调试到红色句时出现错误无法继续运行,之前代码连接数据库中只有一个表时是可以运行的,我又添加了一个表,为什么就不能跑了
...全文
107 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

4,011

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 数据库
社区管理员
  • 数据库
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧