各位,我在VC++6.0中使用 sqldmo 来启动 sqlserver,可是却不成功,请看以下代码:_SQLServerPtr pSqlserver;
try
{
HRESULT hr;
hr = pSqlserver.CreateInstance("SQLDMO.SQLServer");
if (SUCCEEDED(hr))
hr = pSqlserver->Start(TRUE,_variant_t("(local)"),_variant_t("sa"),_variant_t(""));
}
catch(_com_error e)
......可是,怎么也启动不了,请问这是作甚????
try
{
HRESULT hr;
hr = pSqlserver.CreateInstance("SQLDMO.SQLServer");
if (SUCCEEDED(hr))
hr = pSqlserver->Start(TRUE,_variant_t("(local)"),_variant_t("sa"),_variant_t(""));
}
catch(_com_error e)
......可是,怎么也启动不了,请问这是作甚????
这是我在DELPHI中的代码,运行没有问题,我想你应该可以看懂的。
var oSqlServer:Variant;
sOwnerName:String;
i:integer;
begin
oSqlServer:=CreateOleObject('Sqldmo.sqlServer');
oSqlServer.Connect(Edit1.text,edit2.text,edit3.text);
for i:=1 to oSqlserver.databases.count do
begin
listbox1.Items.Add('-------------');
listbox1.items.Add('名称:'+oSqlServer.databases.Item(i).name);
listbox1.items.Add('大小:'+Inttostr(oSqlServer.databases.Item(i).size));
end;
Memo1.Lines.Add('----------');
//memo1.lines.Add(oSqlServer.databases.item('carManage').Owner);
oSqlServer:=null;
end;
放在 DllMain 函数中就不行了,而且连 AfxOleInit 放在其中执行后好象也
没有用,在其他地方调用 COM 前也一样还是要调用一次 AfxOleInit(), 真是
很不理解。?????
最好还是在dwReason == DLL_PROCESS_ATTACH的AfxInitExtensionModule之后加上::CoInitialize(or CoInitializeEx)而在DLL_PROCESS_DETACH的时候::CoUninitialize afxoleinit有一些资源问题可能DLLMAIN还没有分配