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

📄 userdlg.cpp

📁 内容包括从VC++的基本范例到项目开发的许多典型的例子。是VC++初学者不可多得的好资料
💻 CPP
字号:
// UserDlg.cpp : implementation file
//

#include "stdafx.h"
#include "ExMIS.h"
#include "UserDlg.h"

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

/////////////////////////////////////////////////////////////////////////////
// CUserDlg dialog


CUserDlg::CUserDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CUserDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CUserDlg)
	m_nPower = 0;
	m_strPassword = _T("");
	m_strUsername = _T("");
	//}}AFX_DATA_INIT
}


void CUserDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CUserDlg)
	DDX_Control(pDX, IDC_LIST, m_ctrlList);
	DDX_Text(pDX, IDC_EDIT_POWER, m_nPower);
	DDV_MinMaxInt(pDX, m_nPower, 0, 3);
	DDX_Text(pDX, IDC_EDIT_PASSWORD, m_strPassword);
	DDX_Text(pDX, IDC_EDIT_USERNAME, m_strUsername);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CUserDlg, CDialog)
	//{{AFX_MSG_MAP(CUserDlg)
	ON_NOTIFY(NM_CLICK, IDC_LIST, OnClickList)
	ON_BN_CLICKED(IDC_BUTTON_CLEAR, OnButtonClear)
	ON_BN_CLICKED(IDC_BUTTON_ADD, OnButtonAdd)
	ON_BN_CLICKED(IDC_BUTTON_EDIT, OnButtonEdit)
	ON_BN_CLICKED(IDC_BUTTON_DEL, OnButtonDel)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CUserDlg message handlers

BOOL CUserDlg::OnInitDialog() 
{
	CDialog::OnInitDialog();
	
	//添加的代码
	m_ctrlList.InsertColumn(0,"用户名");
	m_ctrlList.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES);
	m_ctrlList.SetColumnWidth(0,160);

	//打开ADO的连接
	m_pRS.ADOOpen();

	//在列表中显示用户
	ShowListItems();	
	
	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

void CUserDlg::ShowListItems()
{
	m_ctrlList.DeleteAllItems();
	m_pRS.ADOExcute("SELECT Username FROM UserTab");
	int i=0;
	while(!m_pRS.ADOEOF()){	
		m_ctrlList.InsertItem(i++,m_pRS.GetFieldString(0));
		m_pRS.MoveNext();
	}
	//m_ctrlList.SetRedraw(TRUE);
}

void CUserDlg::OnClickList(NMHDR* pNMHDR, LRESULT* pResult) 
{	
	*pResult = 0;
	//添加的代码:从数据库中获取选择用户名的资料	
	CString strSQL;
	int i = m_ctrlList.GetSelectionMark();
	CString str=m_ctrlList.GetItemText(i,0);
	strSQL.Format("SELECT * FROM UserTab WHERE Username='%s'",str);
	m_pRS.ADOExcute(strSQL);
	if(m_pRS.nFieldRows!=1)
	{
		AfxMessageBox("数据库查找错误!");
		return ;
	}
	m_strUsername=m_pRS.GetFieldString("Username");
	m_strPassword=m_pRS.GetFieldString("Password");
	m_nPower=m_pRS.GetFieldNumber("Power");
	UpdateData(false);
}

void CUserDlg::OnButtonClear() 
{
	// 清空
	m_strUsername="";
	m_strPassword="";
	m_nPower=0;
	UpdateData(false);
}

void CUserDlg::OnButtonAdd() 
{
	// 添加:password,user等是SQL语言中的保留字,在执行此类SQL操作时应加上方括号
	UpdateData(true);
	CString sql;
	sql.Format("INSERT INTO UserTab(Username,[Password],Power) Values ('%s','%s',%d)",m_strUsername,m_strPassword,m_nPower);

	if(m_pRS.ADOExcuteNoQuery(sql)==1){	
		AfxMessageBox("增加记录成功!");
		//增加完记录后,马上刷新显示;
		ShowListItems();
	}else{
		AfxMessageBox("增加记录失败,可能是重复的用户名,可选择保存修改!");
	}
}

void CUserDlg::OnButtonEdit() 
{
	// 编辑:password,user等是SQL语言中的保留字,在执行此类SQL操作时应加上方括号
	UpdateData(true);
	CString sql;
	sql.Format("UPDATE UserTab SET [Password]='%s',Power=%d WHERE Username='%s'",m_strPassword,m_nPower,m_strUsername);
	AfxMessageBox(sql);
	if(m_pRS.ADOExcuteNoQuery(sql)==1){	
		AfxMessageBox("编辑记录成功!");
		//编辑完记录后,马上刷新显示;
		ShowListItems();
	}else{
		AfxMessageBox("编辑记录失败!");
	}
}

void CUserDlg::OnButtonDel() 
{
	// 删除,此操作不能恢复,一般都需要确认一下
	if(AfxMessageBox("您确认要删除吗?",MB_OKCANCEL)==IDOK)
	{
		UpdateData(true);
		CString sql;
		sql.Format("DELETE * FROM UserTab WHERE Username='%s'",m_strUsername);

		if(m_pRS.ADOExcuteNoQuery(sql)==1){	
			AfxMessageBox("删除记录成功!");
			//刷新显示;
			ShowListItems();
		}else{
			AfxMessageBox("删除记录失败!");
		}
	}
}

⌨️ 快捷键说明

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