欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

DVD出租系统【3】MFC界面连接数据库

程序员文章站 2022-05-08 11:06:26
...

DVD出租系统【3】界面连接数据库


数据库是sql server 2008:

1、初始化COM库:
ADO是基于COM技术的,所以,在应用程序调用ADO前,必须初始化COM库环境。
ADO使用结束后,还需要关闭库,释放初始化加载的动态库,MFC程序中,一般在 CXXXAPP 的 InitInstance 的
函数中调用 COM 库的初始化函数 CoInitialize(NULL); 在 ExitInstance 的函数中调用卸载 COM 库的函数:CoUninitialize();
DVD出租系统【3】MFC界面连接数据库

DVD出租系统【3】MFC界面连接数据库
2、、引入 ADO 动态链接库:
在使用 vc++ 的 MFC 编程开发时,MFC 并没有提供对 ADO 封装类的支持,能够支持 ADO 编程的是 ADO 的 COM动态库 msado*.dll
一般在系统盘的:\Program Files\Common Files\System\ado 目录下,根据操作系统版本的不同,该文件可能是:msado15.dll,
* 代表 ADO 库的版本,在 stdafx.h 头文件中添加如下代码:
#import "C:/Program Files/Common Files/System/ado/msado15.dll" no_namespace rename("EOF", "adoEof")

DVD出租系统【3】MFC界面连接数据库

3、在头文件中添加代码:

_ConnectionPtr m_pConnection;
	BOOL connectDB();
	void CloseDB();
	virtual void OnCancel();

4、接下来增加数据库连接代码,数据库关闭代码:(onCancel是函数重载出来的)

BOOL CDVDRentDlg::connectDB()
{
	HRESULT hr;
	try
	{
		hr = m_pConnection.CreateInstance(__uuidof(Connection));
		if (SUCCEEDED(hr)) {
			//_bstr_t connectStr = _T("Provider=SQLNCLI;Server=192.168.0.100;Database=DVDRentDB;Uid=cctry;Pwd=www.cctry.com");
			_bstr_t connectStr = _T("Provider=sqloledb;Data Source=192.168.1.23;Initial Catalog=DVDRentDB;User Id=sa;Password=123456");
			m_pConnection->ConnectionTimeout = 20;
			hr = m_pConnection->Open(connectStr, _T(""), _T(""), adConnectUnspecified);
			if (FAILED(hr)) {
				MessageBox(_T("打开与数据库的连接失败."));

				return FALSE;
			}
		}
		else {
			MessageBox(_T("实例化 Connection 对象失败."));
			return FALSE;
		}
	}
	catch (_com_error &e)
	{
		_bstr_t bstrSource(e.Source());
		_bstr_t bstrDescription(e.Description());
		MessageBox(bstrDescription, bstrSource);
		return  FALSE;
	}
	return TRUE;
}
void CDVDRentDlg::CloseDB()
{
	if (m_pConnection && m_pConnection->State == adStateOpen) {
		m_pConnection->Close();
	}
}

void CDVDRentDlg::OnCancel()
{
	// TODO: 在此添加专用代码和/或调用基类
	CloseDB();
	CDialogEx::OnCancel();
}

5、运行效果图如下:

DVD出租系统【3】MFC界面连接数据库

DVD出租系统【3】MFC界面连接数据库

本节工程地址:

链接:https://pan.baidu.com/s/1PYaRk-vXiB2hBhTsj4f9CQ 
提取码:ncqx