📄 logindlg.cpp
字号:
// LoginDlg.cpp : implementation file
//
#include "stdafx.h"
#include "HRDB.h"
#include "LoginDlg.h"
#include "desexec.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
//引入全局SQL环境变量
extern SQLHENV henv;
extern SQLHDBC hdbc;
extern SQLHSTMT hstmt;
extern SQLRETURN retcode;
extern BOOL findResult;
int count = 0; // 登录失败次数计数器(超过三次自动退出)
//全局变量userName,passWord
CString userName;
CString passWord;
/////////////////////////////////////////////////////////////////////////////
// CLoginDlg dialog
CLoginDlg::CLoginDlg(CWnd* pParent /*=NULL*/)
: CDialog(CLoginDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CLoginDlg)
m_strPassWord = _T("");
m_strUserName = _T("");
//}}AFX_DATA_INIT
}
void CLoginDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CLoginDlg)
DDX_Control(pDX, IDC_LOGIN_USERNAME, m_editUserName);
DDX_Control(pDX, IDC_LOGIN_PASSWORD, m_editPassWord);
DDX_Text(pDX, IDC_LOGIN_PASSWORD, m_strPassWord);
DDX_Text(pDX, IDC_LOGIN_USERNAME, m_strUserName);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CLoginDlg, CDialog)
//{{AFX_MSG_MAP(CLoginDlg)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CLoginDlg message handlers
void CLoginDlg::OnOK()
{
SQLVARCHAR username[20];
SQLVARCHAR password[20];
SQLINTEGER usernameLenOrInd = 0, passwordLenOrInd = 0;
UpdateData(TRUE); //更新控件关联变量
userName = m_strUserName;
passWord = m_strPassWord;
strcpy( (char *)username, m_strUserName);
strcpy( (char *)password, m_strPassWord);
usernameLenOrInd = SQL_NTS;
passwordLenOrInd = SQL_NTS;
// 分配环境句柄
TODBC0( SQLAllocHandle( SQL_HANDLE_ENV, SQL_NULL_HANDLE, &henv ) );
// 设置环境属性(ODBC版本号)
TODBCe( henv, SQLSetEnvAttr( henv, SQL_ATTR_ODBC_VERSION, (void *)SQL_OV_ODBC3, 0 ) );
// 分配连接句柄
TODBCe( henv, SQLAllocHandle( SQL_HANDLE_DBC, henv, &hdbc ) );
// 设置连接属性(限制登录时间为5秒)
TODBCc( hdbc, SQLSetConnectAttr( hdbc, SQL_LOGIN_TIMEOUT, (void *)5, 0) );
// 连接到数据源
retcode = TODBCc(hdbc, SQLConnect( hdbc, (SQLCHAR *)"hr", SQL_NTS,
(SQLCHAR *)username, SQL_NTS,
(SQLCHAR *)password, SQL_NTS ));
if (retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO)
{
// 分配语句句柄
TODBCc( hdbc, SQLAllocHandle( SQL_HANDLE_STMT, hdbc, &hstmt ) );
findResult = TRUE;
CDialog::OnOK();
}
else
{
if (count >= 2)
{
CLoginDlg::OnCancel();
}
else
{
count++;
AfxMessageBox("登录失败!");
m_editUserName.SetWindowText("");
m_editPassWord.SetWindowText("");
}
}
}
void CLoginDlg::OnCancel()
{
findResult = FALSE;
CDialog::OnCancel();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -