请教vc ado 数据库还原的问题
请教vc ado 数据库还原的问题
我下面的代码不知哪里错了,提示对象关闭时不允许操作,帮忙看看,谢谢
其中BillExport是要被还原的数据库,sPath是备份文件的路径
try
{
// 初始化OLE/COM库环境
::CoInitialize(NULL);
//添加一个指向Connection对象的指针:
_ConnectionPtr m_pConnection1;
//添加一个指向Recordset对象的指针:
_RecordsetPtr m_pRecordset1;
// 创建Connection对象
m_pConnection1.CreateInstance("ADODB.Connection");
// 创建记录集对象
m_pRecordset1.CreateInstance(__uuidof(Recordset));
// 设置连接字符串,必须是BSTR型或者_bstr_t类型
_bstr_t strConnect = "Provider=SQLOLEDB.1;Integrated Security=SSPI;PersistSecurity Info=False;Initial Catalog=master";
m_pConnection1->Open(strConnect,"","",adModeUnknown);
//关闭与BillExport相关的进程
CString temp,sql,sql1;
_bstr_t strDataRestore,str1;
sql = "select spid from master..sysprocesses where dbid=db_id('BillExport')";//查询与BillExport数据库连接的进程ID
strDataRestore = (_bstr_t)sql;
m_pRecordset1 = m_pConnection1->Execute(strDataRestore,NULL,adCmdText);
while (!m_pRecordset1->adoEOF)//断开与BillExport数据库的连接
{
temp = (TCHAR *)(_bstr_t)m_pRecordset1->GetFields()->GetItem("spid")->Value;
sql1.Format(" use master kill %i",atoi(temp));
str1 = (_bstr_t)sql1;
m_pConnection1->Execute((_bstr_t)str1,NULL,adCmdText);
m_pRecordset1->MoveNext();
}
CString sSQL;
_bstr_t vSQL;
sSQL.Format("USE master RESTORE DATABASE BillExport FROM DISK='%s'",sPath);
vSQL = (_bstr_t)sSQL;
m_pRecordset1 = m_pConnection1->Execute(vSQL,NULL,adCmdText);
// 关闭记录集和连接
if (m_pRecordset1 != NULL)
m_pRecordset1->Close();
m_pConnection1->Close();
// 释放环境
::CoUninitialize();
}
// 捕捉异常
catch(_com_error e)
{
AfxMessageBox(e.Description());
}
编译通过,运行时提示对象关闭时不允许操作