描述:
...
CononPtr->Open(L"Provider=SQLOLEDB.1;Persist Security Info=False;Data
Source= ZDK;User ID=sa;Initial
Catalog=news;Password=zdk63749376;",L"",L"",adModeUnknown);
...
上面的语句可以成功连接数据库,记录也显示出来了,但是我在组件服务里配置组件给组件启用对象结构,输入字符串:
L"Provider=SQLOLEDB.1;Persist Security Info=False;Data
Source= ZDK;User ID=sa;Initial
Catalog=news;Password=zdk63749376;"
然后通过下面的函数Construct(..):
STDMETHOD(Construct)(IDispatch * pCtorObj)
{
HRESULT hr;
CComPtr<IObjectConstructString> object_construct_string;
_bstr_t construct_string;
hr=pCtorObj->QueryInterface(IID_IObjectConstructString,reinterpret_cast<void **>(&object_construct_string));
if(SUCCEEDED(hr))
{
CComBSTR m_constr;
hr=object_construct_string->get_ConstructString(&m_constr.m_str);
if(SUCCEEDED(hr))
{
CComAutoCriticalSection m_critsec;
m_critsec.Lock();
m_C />
}
}
return hr;
}
获得:m_Connectionstr,我也测试显示出来过了,这个值就是
上面连接数据库的字符串,但是下面的语句 就是连不上数据库,这是怎么回事??
CononPtr->Open(m_Connectionstr.m_str,L"",L"",adModeUnknown);
解决方案1:
应该把L"Provider=SQLOLEDB.1;Persist Security Info=False;Data
Source= ZDK;User ID=sa;Initial
Catalog=news;Password=zdk63749376;"
改为:Provider=SQLOLEDB.1;Persist Security Info=False;Data
Source= ZDK;User ID=sa;Initial
Catalog=news;Password=zdk63749376;
这样就可以了!!