中间件标准版5.1git,去除基础模块

DialogDsn.cpp 3.7KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178
  1. // DialogDsn.cpp : 实现文件
  2. //
  3. #include "stdafx.h"
  4. #include "FirstStep.h"
  5. #include "DialogDsn.h"
  6. #include "afxdialogex.h"
  7. // CDialogDsn 对话框
  8. IMPLEMENT_DYNAMIC(CDialogDsn, CDialogEx)
  9. CDialogDsn::CDialogDsn(CWnd* pParent /*=NULL*/)
  10. : CDialogEx(CDialogDsn::IDD, pParent)
  11. {
  12. m_UserPwd = _T("");
  13. m_UserName = _T("");
  14. m_DsnName = _T("");
  15. }
  16. CDialogDsn::~CDialogDsn()
  17. {
  18. }
  19. /*****************************************************************
  20. **【函数名称】 __getRegInfo
  21. **【函数功能】 获取注册表中数据源信息
  22. **【参数】
  23. **【返回值】
  24. ****************************************************************/
  25. bool CDialogDsn::__getRegInfo()
  26. {
  27. CRegKey key;
  28. // 打开键值失败
  29. if(key.Open(HKEY_CURRENT_USER, "Software\\FirstStep\\Database", KEY_READ) != ERROR_SUCCESS)
  30. {
  31. key.Create(HKEY_CURRENT_USER, "Software\\FirstStep\\Database");
  32. }
  33. else
  34. {
  35. // DSN名称
  36. ULONG nSize = MAX_PATH;
  37. CHAR szTmp[MAX_PATH] = { 0 };
  38. key.QueryStringValue("DSN", szTmp, &nSize);
  39. m_DsnName = szTmp;
  40. // 用户名
  41. nSize = MAX_PATH;
  42. memset(szTmp, 0, MAX_PATH);
  43. key.QueryStringValue("USER", szTmp, &nSize);
  44. m_UserName = szTmp;
  45. // 口令
  46. nSize = MAX_PATH;
  47. memset(szTmp, 0, MAX_PATH);
  48. key.QueryStringValue("PASS", szTmp, &nSize);
  49. m_UserPwd = szTmp;
  50. }
  51. key.Close();
  52. return true;
  53. }
  54. /*****************************************************************
  55. **【函数名称】 __setRegInfo
  56. **【函数功能】 设置注册表中数据源信息
  57. **【参数】
  58. **【返回值】
  59. ****************************************************************/
  60. bool CDialogDsn::__setRegInfo()
  61. {
  62. // 保存配置信息到注册表
  63. CRegKey key;
  64. key.Open(HKEY_CURRENT_USER, "Software\\FirstStep\\Database", KEY_WRITE);
  65. key.SetStringValue("DSN", m_DsnName);
  66. key.SetStringValue("USER", m_UserName);
  67. key.SetStringValue("PASS", m_UserPwd);
  68. key.Close();
  69. return true;
  70. }
  71. void CDialogDsn::DoDataExchange(CDataExchange* pDX)
  72. {
  73. CDialogEx::DoDataExchange(pDX);
  74. DDX_Text(pDX, IDC_EDT_DB_PWD, m_UserPwd);
  75. DDX_Text(pDX, IDC_EDT_DB_USER, m_UserName);
  76. DDX_Text(pDX, IDC_EDT_DSN, m_DsnName);
  77. }
  78. BEGIN_MESSAGE_MAP(CDialogDsn, CDialogEx)
  79. ON_BN_CLICKED(IDOK, &CDialogDsn::OnBnClickedOk)
  80. ON_BN_CLICKED(IDCANCEL, &CDialogDsn::OnBnClickedCancel)
  81. ON_BN_CLICKED(IDC_BTN_DSN_TEST, &CDialogDsn::OnBnClickedBtnDsnTest)
  82. END_MESSAGE_MAP()
  83. // CDialogDsn 消息处理程序
  84. void CDialogDsn::OnBnClickedOk()
  85. {
  86. UpdateData(TRUE);
  87. // 生成连接字符串
  88. CString ConStr;;
  89. ConStr.Format(_T("DSN=%s; UID=%s; PWD=%s"), m_DsnName, m_UserName, m_UserPwd);
  90. CHAR szErrInfo[OTL_MAX_BUFF_SIZE] = { 0 };
  91. if(!IOtlConnection::getInstance()->ConnectTest(ConStr, szErrInfo))
  92. {
  93. CString strInfo = _T("数据库连接失败:\r\n");
  94. strInfo += szErrInfo;
  95. MessageBox(strInfo, "数据源配置", MB_ICONWARNING | MB_OK);
  96. return;
  97. }
  98. else
  99. {
  100. __setRegInfo(); // 保存配置到注册表
  101. IOtlConnection::getInstance()->Disconnect();
  102. IOtlConnection::getInstance()->Connect();
  103. CDialogEx::OnOK();
  104. }// end if
  105. }
  106. void CDialogDsn::OnBnClickedCancel()
  107. {
  108. CDialogEx::OnCancel();
  109. }
  110. void CDialogDsn::OnBnClickedBtnDsnTest()
  111. {
  112. UpdateData(TRUE);
  113. // 生成连接字符串
  114. CString ConStr;;
  115. ConStr.Format(_T("DSN=%s; UID=%s; PWD=%s"), m_DsnName, m_UserName, m_UserPwd);
  116. CHAR szErrInfo[OTL_MAX_BUFF_SIZE] = { 0 };
  117. if(!IOtlConnection::getInstance()->ConnectTest(ConStr, szErrInfo))
  118. {
  119. CString strInfo = _T("数据库连接失败:\r\n");
  120. strInfo += szErrInfo;
  121. MessageBox(strInfo, "数据源配置", MB_ICONWARNING | MB_OK);
  122. }
  123. else
  124. {
  125. CString strInfo = _T("数据库连接成功!");
  126. MessageBox(strInfo, "数据源配置", MB_ICONINFORMATION | MB_OK);
  127. }// end if
  128. }
  129. INT_PTR CDialogDsn::DoModal()
  130. {
  131. __getRegInfo();
  132. return CDialogEx::DoModal();
  133. }
  134. BOOL CDialogDsn::PreTranslateMessage(MSG* pMsg)
  135. {
  136. // TODO: 在此添加专用代码和/或调用基类
  137. if((pMsg->message == WM_KEYDOWN) && (pMsg->wParam == VK_ESCAPE))
  138. return TRUE;
  139. return CDialogEx::PreTranslateMessage(pMsg);
  140. }