| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178 |
- // DialogDsn.cpp : 实现文件
- //
- #include "stdafx.h"
- #include "FirstStep.h"
- #include "DialogDsn.h"
- #include "afxdialogex.h"
- // CDialogDsn 对话框
- IMPLEMENT_DYNAMIC(CDialogDsn, CDialogEx)
- CDialogDsn::CDialogDsn(CWnd* pParent /*=NULL*/)
- : CDialogEx(CDialogDsn::IDD, pParent)
- {
- m_UserPwd = _T("");
- m_UserName = _T("");
- m_DsnName = _T("");
- }
- CDialogDsn::~CDialogDsn()
- {
- }
- /*****************************************************************
- **【函数名称】 __getRegInfo
- **【函数功能】 获取注册表中数据源信息
- **【参数】
- **【返回值】
- ****************************************************************/
- bool CDialogDsn::__getRegInfo()
- {
- CRegKey key;
- // 打开键值失败
- if(key.Open(HKEY_CURRENT_USER, "Software\\FirstStep\\Database", KEY_READ) != ERROR_SUCCESS)
- {
- key.Create(HKEY_CURRENT_USER, "Software\\FirstStep\\Database");
- }
- else
- {
- // DSN名称
- ULONG nSize = MAX_PATH;
- CHAR szTmp[MAX_PATH] = { 0 };
- key.QueryStringValue("DSN", szTmp, &nSize);
- m_DsnName = szTmp;
- // 用户名
- nSize = MAX_PATH;
- memset(szTmp, 0, MAX_PATH);
- key.QueryStringValue("USER", szTmp, &nSize);
- m_UserName = szTmp;
- // 口令
- nSize = MAX_PATH;
- memset(szTmp, 0, MAX_PATH);
- key.QueryStringValue("PASS", szTmp, &nSize);
- m_UserPwd = szTmp;
- }
- key.Close();
- return true;
- }
- /*****************************************************************
- **【函数名称】 __setRegInfo
- **【函数功能】 设置注册表中数据源信息
- **【参数】
- **【返回值】
- ****************************************************************/
- bool CDialogDsn::__setRegInfo()
- {
- // 保存配置信息到注册表
- CRegKey key;
- key.Open(HKEY_CURRENT_USER, "Software\\FirstStep\\Database", KEY_WRITE);
- key.SetStringValue("DSN", m_DsnName);
- key.SetStringValue("USER", m_UserName);
- key.SetStringValue("PASS", m_UserPwd);
- key.Close();
- return true;
- }
- void CDialogDsn::DoDataExchange(CDataExchange* pDX)
- {
- CDialogEx::DoDataExchange(pDX);
- DDX_Text(pDX, IDC_EDT_DB_PWD, m_UserPwd);
- DDX_Text(pDX, IDC_EDT_DB_USER, m_UserName);
- DDX_Text(pDX, IDC_EDT_DSN, m_DsnName);
- }
- BEGIN_MESSAGE_MAP(CDialogDsn, CDialogEx)
- ON_BN_CLICKED(IDOK, &CDialogDsn::OnBnClickedOk)
- ON_BN_CLICKED(IDCANCEL, &CDialogDsn::OnBnClickedCancel)
- ON_BN_CLICKED(IDC_BTN_DSN_TEST, &CDialogDsn::OnBnClickedBtnDsnTest)
- END_MESSAGE_MAP()
- // CDialogDsn 消息处理程序
- void CDialogDsn::OnBnClickedOk()
- {
- UpdateData(TRUE);
- // 生成连接字符串
- CString ConStr;;
- ConStr.Format(_T("DSN=%s; UID=%s; PWD=%s"), m_DsnName, m_UserName, m_UserPwd);
- CHAR szErrInfo[OTL_MAX_BUFF_SIZE] = { 0 };
- if(!IOtlConnection::getInstance()->ConnectTest(ConStr, szErrInfo))
- {
- CString strInfo = _T("数据库连接失败:\r\n");
- strInfo += szErrInfo;
- MessageBox(strInfo, "数据源配置", MB_ICONWARNING | MB_OK);
- return;
- }
- else
- {
- __setRegInfo(); // 保存配置到注册表
- IOtlConnection::getInstance()->Disconnect();
- IOtlConnection::getInstance()->Connect();
- CDialogEx::OnOK();
- }// end if
- }
- void CDialogDsn::OnBnClickedCancel()
- {
- CDialogEx::OnCancel();
- }
- void CDialogDsn::OnBnClickedBtnDsnTest()
- {
- UpdateData(TRUE);
- // 生成连接字符串
- CString ConStr;;
- ConStr.Format(_T("DSN=%s; UID=%s; PWD=%s"), m_DsnName, m_UserName, m_UserPwd);
- CHAR szErrInfo[OTL_MAX_BUFF_SIZE] = { 0 };
- if(!IOtlConnection::getInstance()->ConnectTest(ConStr, szErrInfo))
- {
- CString strInfo = _T("数据库连接失败:\r\n");
- strInfo += szErrInfo;
- MessageBox(strInfo, "数据源配置", MB_ICONWARNING | MB_OK);
- }
- else
- {
- CString strInfo = _T("数据库连接成功!");
- MessageBox(strInfo, "数据源配置", MB_ICONINFORMATION | MB_OK);
- }// end if
- }
- INT_PTR CDialogDsn::DoModal()
- {
- __getRegInfo();
- return CDialogEx::DoModal();
- }
- BOOL CDialogDsn::PreTranslateMessage(MSG* pMsg)
- {
- // TODO: 在此添加专用代码和/或调用基类
- if((pMsg->message == WM_KEYDOWN) && (pMsg->wParam == VK_ESCAPE))
- return TRUE;
- return CDialogEx::PreTranslateMessage(pMsg);
- }
|