⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rcoapplication.cpp

📁 MSSQL备份及恢复的VC++源代码。提供给大家学习。
💻 CPP
字号:
// RcOApplication.cpp: implementation of the CRcOApplication class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "RcMSSQL.h"
#include "RcOApplication.h"

#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

LPSQLDMOAPPLICATION CRcOApplication::m_pDMOApp=NULL;

CRcOApplication::CRcOApplication()
{
	m_pErrorMessage=NULL;
	m_pErrorMessage=new CRcErrorMessage;
	m_strErrorMessage=_T("");

	m_arrServersList.RemoveAll();
	m_lServersAmount=0;
}

CRcOApplication::~CRcOApplication()
{
	if (m_pErrorMessage != NULL)
	{
		delete m_pErrorMessage;
		m_pErrorMessage=NULL;
	}
	m_strErrorMessage=_T("");

	m_arrServersList.RemoveAll();
	m_lServersAmount=0;
}

BOOL CRcOApplication::Initializtion()
{
	HRESULT hr;

	if FAILED(hr = CoInitialize (NULL))
	{
		m_strErrorMessage.Format ("%s", "CoInitialize 失败!");
		return FALSE;
	}

	if (m_pDMOApp != NULL) return TRUE;

	if FAILED(hr = CoCreateInstance (CLSID_SQLDMOApplication, NULL, CLSCTX_INPROC_SERVER,
		IID_ISQLDMOApplication, (LPVOID*)&m_pDMOApp))
	{
		m_strErrorMessage.Format ("%s", "CLSID_SQLDMOApplication: CoCreateInstance 失败!");
		return FALSE;
	}

	return TRUE;
}

BOOL CRcOApplication::Completion()
{
	if (m_pDMOApp)
	{
 		m_pDMOApp->Release();
		m_pDMOApp=NULL;
	}
	CoUninitialize ();

	return TRUE;
}

BOOL CRcOApplication::SetAvailableServersList()
{
// Remarks:
//	Nondefault instances of SQL Server are displayed in the form of SERVERNAME/INSTANCENAME.
//	The ListAvailableSQLServers method is supported only for servers and workstations 
//	running Microsoft Windows NT 4.0 and Microsoft Windows 2000.

	assert(m_pDMOApp != NULL);        /* Cannot be NULL */

	m_arrServersList.RemoveAll();
	m_lServersAmount=0;

	BOOL bExitStatus=FALSE;

	try
	{
		LPSQLDMONAMELIST pNameList=NULL;

		if SUCCEEDED(m_pDMOApp->ListAvailableSQLServers(&pNameList))
		{
			LONG lCount=0; pNameList->GetCount(&lCount);

			BSTR strTemplate=NULL;	// BSTR: A 32-bit character pointer.
			CString strServerName;

			for (LONG i=0; i < lCount; i++)
			{
				pNameList->GetItemByOrd(i, &strTemplate);

				strServerName=strTemplate;
				m_arrServersList.Add(strServerName);
				m_lServersAmount++;
			}

			bExitStatus=TRUE;
		}

		if (m_pDMOApp) pNameList=NULL;
	}
	catch(...)
	{
		m_pErrorMessage->FormatErrorMessage("IID_ISQLDMOApplication 异常中断", GetLastError ());
		m_strErrorMessage=m_pErrorMessage->GetErrorMessage();
	}

	return bExitStatus;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -