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

📄 family.cpp

📁 运用ADO技术连接ACCESS数据库(改变连接字串就能连接SQL数据库)
💻 CPP
字号:
// FAMILY.cpp : implementation file
//

#include "stdafx.h"
#include "family_financ_system.h"
#include "FAMILY.h"

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

/////////////////////////////////////////////////////////////////////////////
// CFAMILY dialog


CFAMILY::CFAMILY(CWnd* pParent /*=NULL*/)
	: CDialog(CFAMILY::IDD, pParent)
{
	//{{AFX_DATA_INIT(CFAMILY)
	m_name = _T("");
	m_typ = _T("");
	//}}AFX_DATA_INIT
}


void CFAMILY::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CFAMILY)
	DDX_Control(pDX, IDC_LIST1, m_list);
	DDX_Text(pDX, IDC_EDIT1, m_name);
	DDX_Text(pDX, IDC_EDIT2, m_typ);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CFAMILY, CDialog)
	//{{AFX_MSG_MAP(CFAMILY)
	ON_BN_CLICKED(IDCANCEL2, OnDelert)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CFAMILY message handlers

void CFAMILY::OnDelert() 
{
	// TODO: Add your control notification handler code here
	// 删除成员
	int i=0,j;
	j=m_list.GetItemCount();
	while((m_list.GetItemState(i, LVIS_SELECTED) != LVIS_SELECTED)&&(i<j))
	{
		i++;
	}
	if(i<j)
	{
			CString	f_man=m_list.GetItemText(i,0);
	
			///////////////////////////////////////////////////////////////////////////////
			CoInitialize(NULL);    //初始化COM组件
			_ConnectionPtr m_pConnection; 
			_RecordsetPtr m_pRecordset; 		
			m_pConnection.CreateInstance(__uuidof(Connection)); 
			m_pRecordset.CreateInstance(__uuidof(Recordset));  
			m_pConnection->Open(_bstr_t(Title1),"","",adModeUnknown); 
			CString sqlstr="SELECT * FROM 家庭成员表 where (家庭成员姓名='";
			sqlstr=sqlstr+f_man+"')";
			m_pRecordset->Open(_variant_t(sqlstr),                // 查询Demo表中所有字段 
							(IDispatch*)m_pConnection.GetInterfacePtr(), // 获取数据库的IDispatch指针 
							adOpenDynamic, 
							adLockOptimistic, 
							adCmdText); 
			if(!m_pRecordset->EndEOF)
			{
				m_pRecordset->Delete(adAffectCurrent);
				m_pRecordset->Update();///保存到库中
			}

			m_pRecordset->Close();     
			m_pConnection->Close();
			/////////////////////////////////////////////
				m_pConnection.CreateInstance(__uuidof(Connection)); 
				m_pRecordset.CreateInstance(__uuidof(Recordset));  
				m_pConnection->Open(_bstr_t(Title1),"","",adModeUnknown); 
				sqlstr="SELECT * FROM 家庭成员表";
				m_pRecordset->Open(_variant_t(sqlstr),                // 查询Demo表中所有字段 
							(IDispatch*)m_pConnection.GetInterfacePtr(), // 获取数据库的IDispatch指针 
							adOpenDynamic, 
							adLockOptimistic, 
							adCmdText);
				m_list.DeleteAllItems();
				int nstep;
				for(i=0;!m_pRecordset->EndEOF; m_pRecordset->MoveNext()) //  在数据库中寻找	pRecord->MoveFirst()
				{		
					_bstr_t temp=m_pRecordset->GetCollect("家庭成员姓名");
					nstep=m_list.InsertItem(i,temp);	
					temp=m_pRecordset->GetCollect("成员属性");
					m_list.SetItemText(nstep,1,temp);
				}
		////////////////////////////////////////////////////////////////////////////////////
			m_pRecordset->Close();     
			m_pConnection->Close();
			CoUninitialize();    //卸载COM组件


	}
	else
	{
		AfxMessageBox("请选择要删除的记录!");
	}
	
}

void CFAMILY::OnOK() 
{
	// TODO: Add extra validation here
	//   添加成员
	//CDialog::OnOK();
	UpdateData(TRUE);
	if(m_name!="")
	{
		////////////////////////////////////////////////////////////////////////////////
		//
		//		添加记录需要用记录的打开方法
		//
		///////////////////////////////////////////////////////////////////////////////
		CoInitialize(NULL);    //初始化COM组件
		_ConnectionPtr m_pConnection; 
		_RecordsetPtr m_pRecordset; 		
		m_pConnection.CreateInstance(__uuidof(Connection)); 
		m_pRecordset.CreateInstance(__uuidof(Recordset));  
		m_pConnection->Open(_bstr_t(Title1),"","",adModeUnknown); 
		CString sqlstr="SELECT * FROM 家庭成员表 where (家庭成员姓名='";
		sqlstr=sqlstr+m_name+"')";
		m_pRecordset->Open(_variant_t(sqlstr),                // 查询Demo表中所有字段 
						(IDispatch*)m_pConnection.GetInterfacePtr(), // 获取数据库的IDispatch指针 
						adOpenDynamic, 
						adLockOptimistic, 
						adCmdText); 
		if(m_pRecordset->EndEOF)
		{
			// 写入各字段值 
			m_pRecordset->AddNew(); 
			m_pRecordset->PutCollect("家庭成员姓名",_variant_t(m_name));; 
			m_pRecordset->PutCollect("成员属性", _variant_t(m_typ)); 
			m_pRecordset->Update();
		}
		else
		{
			AfxMessageBox("该姓名已存在!");
		}
		m_pRecordset->Close();     
		m_pConnection->Close();	
	
		/////////////////////////////////////////////
		m_pConnection.CreateInstance(__uuidof(Connection)); 
		m_pRecordset.CreateInstance(__uuidof(Recordset));  
		m_pConnection->Open(_bstr_t(Title1),"","",adModeUnknown); 
		sqlstr="SELECT * FROM 家庭成员表";
		m_pRecordset->Open(_variant_t(sqlstr),                // 查询Demo表中所有字段 
					(IDispatch*)m_pConnection.GetInterfacePtr(), // 获取数据库的IDispatch指针 
					adOpenDynamic, 
					adLockOptimistic, 
					adCmdText);
		m_list.DeleteAllItems();
		int nstep;
		for(int i=0;!m_pRecordset->EndEOF; m_pRecordset->MoveNext()) //  在数据库中寻找	pRecord->MoveFirst()
		{		
			_bstr_t temp=m_pRecordset->GetCollect("家庭成员姓名");
			nstep=m_list.InsertItem(i,temp);	
			temp=m_pRecordset->GetCollect("成员属性");
			m_list.SetItemText(nstep,1,temp);
		}
		////////////////////////////////////////////////////////////////////////////////////
		m_pRecordset->Close();     
		m_pConnection->Close();
		CoUninitialize();    //卸载COM组件
		is_ok="OK";
	}
	else
	{
		AfxMessageBox("必须有姓名!");
	}
	m_name="";
	m_typ="";
	UpdateData(FALSE);
}

BOOL CFAMILY::OnInitDialog() 
{
	CDialog::OnInitDialog();
	
	// TODO: Add extra initialization here
	// 初始化列表
	m_list.SetExtendedStyle(LVS_EX_FULLROWSELECT);
	m_list.InsertColumn(0,"家庭成员姓名",LVCFMT_LEFT,120,-1);
	m_list.InsertColumn(1,"成员属性",LVCFMT_LEFT,100,-1);
	///////////////////////////////////////////////////////////
	int i=0;
	int nstep;
	_bstr_t temp;	
	////////////////////////////////////////////////////////////////////////////////
	CoInitialize(NULL);    //初始化COM组件
	_ConnectionPtr pConn(__uuidof(Connection));    //实例化一个connection对象pConn
	_RecordsetPtr pRst(__uuidof(Recordset));    //实例化一个Recordset对象pRst
	_CommandPtr pCmd(__uuidof(Command));    //实例化一个Command对象pCmd
	pConn->ConnectionString=(_bstr_t)Title1;
	//通过pConn对象连接字符串,连接到ACCESS数据库
	HRESULT hr = pConn->Open("","","",adConnectUnspecified);
	// 以同步的方式进行连接  open("连接字串","用户名","密码","连接方式") 
	// 连接方式有"adConnectUnspecified"(同步) 和 "adAsyncConnect" (异步)
	pCmd->put_ActiveConnection(_variant_t((IDispatch*)pConn));
	pCmd->CommandText="SELECT * FROM 家庭成员表";    //通过pCmd对象访问数据库
	pRst=pCmd->Execute(NULL,NULL,adCmdText);
	for(;!pRst->EndEOF; pRst->MoveNext()) //  在数据库中寻找	pRecord->MoveFirst()
	{		
		_bstr_t temp=pRst->GetCollect("家庭成员姓名");
		nstep=m_list.InsertItem(i,temp);	
		temp=pRst->GetCollect("成员属性");
		m_list.SetItemText(nstep,1,temp);
	}	
	//////////////////////////////////////////////////////////////////////
	pRst->Close();    //关闭对象
	pConn->Close();
	pCmd.Release();    //释放对象
	pRst.Release();
	pConn.Release();
	CoUninitialize();    //卸载COM组件
	/////////////////////////////////////////////////////////////////////

	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

⌨️ 快捷键说明

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