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

📄 myphoneentry.cpp

📁 COM+ Programming: A Practical Guide Using Visual C++ and ATL by Pradeep Tapadiya
💻 CPP
字号:
// MyPhoneEntry.cpp : Implementation of CPhoneBookApp and DLL registration.

#include "stdafx.h"
#include "PhoneBook.h"
#include "MyPhoneEntry.h"

/////////////////////////////////////////////////////////////////////////////
//

STDMETHODIMP CMyPhoneEntry::InterfaceSupportsErrorInfo(REFIID riid)
{
	static const IID* arr[] = 
	{
		&IID_IMyPhoneEntry,
	};

	for (int i=0;i<sizeof(arr)/sizeof(arr[0]);i++)
	{
		if (::InlineIsEqualGUID(*arr[i],riid))
			return S_OK;
	}
	return S_FALSE;
}

STDMETHODIMP CMyPhoneEntry::put_FirstName(BSTR newVal)
{
	m_bsFirstName = newVal;

	return S_OK;
}

STDMETHODIMP CMyPhoneEntry::put_LastName(BSTR newVal)
{
	m_bsLastName = newVal;

	return S_OK;
}

STDMETHODIMP CMyPhoneEntry::put_PhoneNumber(BSTR newVal)
{
	m_bsPhoneNumber = newVal;

	return S_OK;
}

ADOConnectionPtr OpenPhoneBookDB()
{
	ADOConnectionPtr spConn;
	HRESULT hr = spConn.CreateInstance(__uuidof(ADODB::Connection));
	CHECKHR(hr);

	_bstr_t bsDSN = "provider=sqloledb;database=PhoneBookDB";
	_bstr_t bsUser = "sa";
	hr = spConn->Open (bsDSN, bsUser, (LPCTSTR) NULL, NULL);
	CHECKHR(hr);
	return spConn;
}

void InsertEntry(ADOConnectionPtr spConn, 
				 BSTR bsLastName,
				 BSTR bsFirstName,
				 BSTR bsPhoneNumber)
{
	TCHAR buf[256];
	_stprintf(buf, _T("INSERT INTO Friends VALUES ('%S', '%S','%S')"),
		bsLastName, bsFirstName, bsPhoneNumber);

	_variant_t vRecordCount;
	spConn->Execute(buf, &vRecordCount,-1);
}

STDMETHODIMP CMyPhoneEntry::Update()
{
	try {
		ADOConnectionPtr spConn = OpenPhoneBookDB();
		InsertEntry(spConn, m_bsLastName, m_bsFirstName, m_bsPhoneNumber);
	}catch(_com_error& e) {
		return Error((LPCWSTR) e.Description(), __uuidof(IMyPhoneEntry), E_FAIL);
	}

	return S_OK;
}

⌨️ 快捷键说明

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