#include "stdafx.h" #include "LJCSDlg.h" #include "Base64.h" #include "uiiado.h" IMPLEMENT_DYNAMIC(CLJCSDlg, CDialog) CLJCSDlg::CLJCSDlg(CWnd* pParent /*=NULL*/) : CDialog(CLJCSDlg::IDD, pParent) , m_sSQLSrvName(_T("192.168.1.2\\SH_EARTHWORM")) , m_sUser(_T("sa")) , m_sPWD(_T("SHAdministrator")) , m_sDatabase(_T("SH_EarthWorm")) { } CLJCSDlg::~CLJCSDlg() { } void CLJCSDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); DDX_Text(pDX, IDC_EDIT2, m_sSQLSrvName); DDX_Text(pDX, IDC_EDIT4, m_sUser); DDX_Text(pDX, IDC_EDIT6, m_sPWD); DDX_Text(pDX, IDC_EDIT7, m_sDatabase); DDX_Control(pDX, IDC_BTTEST, m_wndLJCSBT); } BEGIN_MESSAGE_MAP(CLJCSDlg, CDialog) ON_BN_CLICKED(IDOK, &CLJCSDlg::OnBnClickedOk) ON_BN_CLICKED(IDC_BTTEST, &CLJCSDlg::OnBnClickedLJCS) END_MESSAGE_MAP() BOOL CLJCSDlg::OnInitDialog() { CDialog::OnInitDialog(); CLJCSDlg::GetSHEarthWormDbCfg(m_sSQLSrvName,m_sUser,m_sPWD,m_sDatabase); UpdateData(FALSE); return TRUE; } void CLJCSDlg::OnBnClickedOk() { UpdateData(); CString sText; m_wndLJCSBT.GetWindowText(sText); if ( sText.Find(_T("√") ) != -1 ) { //sqlsrvname CString sProductIni = FilePath::GetSysDir() + _T("\\product.ini"); ::WritePrivateProfileString(_T("Product"), _T("SQLServer"), m_sSQLSrvName, sProductIni); //userid std::string suserP = Base64::unicode2Ansii((LPCTSTR)m_sUser, CP_UTF8); std::string suserM = Base64::Encode(suserP); suserM.append("sh");//干扰 CString sUser; sUser = suserM.c_str(); ::WritePrivateProfileString(_T("Product"), _T("UserID"), sUser, sProductIni); //password std::string spwdP = Base64::unicode2Ansii((LPCTSTR)m_sPWD, CP_UTF8); std::string spwdM = Base64::Encode(spwdP); spwdM.append("rm");//干扰 CString sPwd; sPwd = spwdM.c_str(); ::WritePrivateProfileString(_T("Product"), _T("Password"), sPwd, sProductIni); //database ::WritePrivateProfileString(_T("Product"), _T("Database"), m_sDatabase, sProductIni); AfxMessageBox(_T("数据库配置信息保存完成!")); OnOK(); } else { AfxMessageBox(_T("数据库没有连接测试,请检查执行连接测试!")); } } void CLJCSDlg::OnBnClickedLJCS() { UpdateData(); CString sConnect; sConnect.Format(_T("Driver=SQL Server;Server=%s;Database=%s;User Id=%s;Password=%s;"), m_sSQLSrvName, m_sDatabase, m_sUser, m_sPWD); ::CoInitialize(NULL); CUIISQLiteServer* pMySQLDb = new CUIISQLiteServer; if (!pMySQLDb->InitSQLServer(sConnect)) { AfxMessageBox(_T("连接测试失败,请检查数据库连接设置!")); delete pMySQLDb; return; } AfxMessageBox(_T("连接测试成功!")); CString sText; m_wndLJCSBT.GetWindowText(sText); sText.TrimRight(_T("√")); sText += _T("√"); m_wndLJCSBT.SetWindowText(sText); delete pMySQLDb; } bool CLJCSDlg::testSQL() { CString _sSQLSrvName; CString _sUser; CString _sPWD; CString _sDatabase; CLJCSDlg::GetSHEarthWormDbCfg(_sSQLSrvName,_sUser,_sPWD,_sDatabase); CString sConnect; sConnect.Format(_T("Driver=SQL Server;Server=%s;Database=%s;User Id=%s;Password=%s;"), _sSQLSrvName, _sDatabase, _sUser, _sPWD); ::CoInitialize(NULL); CUIISQLiteServer* pMySQLDb = new CUIISQLiteServer; if (!pMySQLDb->InitSQLServer(sConnect)) { AfxMessageBox(_T("连接失败,请运行数据库连接测试命令!")); delete pMySQLDb; return false; } delete pMySQLDb; return true; } bool CLJCSDlg::GetSHEarthWormDbCfg(CString& _sSQLSrvName,CString& _sUser,CString& _sPWD,CString& _sDatabase) { CString sProductIni = FilePath::GetSysDir() + _T("\\product.ini"); //sqlsrv TCHAR szVal[MAX_PATH]; if (0 == ::GetPrivateProfileString(_T("Product"), _T("SQLServer"), _T(""), szVal, MAX_PATH, sProductIni) ) return false; _sSQLSrvName = szVal; //userid if (0 == ::GetPrivateProfileString(_T("Product"), _T("UserID"), _T(""), szVal, MAX_PATH, sProductIni) ) return false; //去除干扰 CString sVal = szVal; sVal.TrimRight(_T("sh")); _tcscpy(szVal,sVal); std::string suser = (LPCSTR)_bstr_t((LPCTSTR)szVal); //解密 std::string suserM = Base64::Decode(suser); std::wstring swuserM = Base64::ansii2Unicode(suserM.c_str(),CP_UTF8); _sUser = swuserM.c_str(); //password if (0 == ::GetPrivateProfileString(_T("Product"), _T("Password"), _T(""), szVal, MAX_PATH, sProductIni) ) return false; //去除干扰 sVal = szVal; sVal.TrimRight(_T("rm")); _tcscpy(szVal,sVal); std::string spwd = (LPCSTR)_bstr_t((LPCTSTR)szVal); //解密 std::string spwdM = Base64::Decode(spwd); std::wstring swpwdM = Base64::ansii2Unicode(spwdM.c_str(),CP_UTF8); _sPWD = swpwdM.c_str(); if (0 == ::GetPrivateProfileString(_T("Product"), _T("Database"), _T(""), szVal, MAX_PATH, sProductIni) ) return false; _sDatabase = szVal; return true; } CUIISQLiteServer* CLJCSDlg::GetSHEarthWormConnect() { CString _sSQLSrvName; CString _sUser; CString _sPWD; CString _sDatabase; if (! CLJCSDlg::GetSHEarthWormDbCfg(_sSQLSrvName,_sUser,_sPWD,_sDatabase) ) { AfxMessageBox(_T("数据库配置不正确,请执行数据库连接测试命令!")); return NULL; } CString sConnect; sConnect.Format(_T("Driver=SQL Server;Server=%s;Database=%s;User Id=%s;Password=%s;"), _sSQLSrvName, _sDatabase, _sUser, _sPWD); ::CoInitialize(NULL); CUIISQLiteServer* pMySQLDb = new CUIISQLiteServer; if (!pMySQLDb->InitSQLServer(sConnect)) { AfxMessageBox(_T("连接失败,请运行数据库连接测试命令!")); delete pMySQLDb; return NULL; } return pMySQLDb; }