2026-10-04 00:04:20 +08:00
|
|
|
|
2026-09-28 15:28:50 +08:00
|
|
|
#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);
|
2026-10-04 00:04:20 +08:00
|
|
|
if ( sText.Find(_T("√") ) != -1 )
|
2026-09-28 15:28:50 +08:00
|
|
|
{
|
|
|
|
|
//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);
|
2026-10-04 00:04:20 +08:00
|
|
|
suserM.append("sh");//干扰
|
2026-09-28 15:28:50 +08:00
|
|
|
|
|
|
|
|
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);
|
2026-10-04 00:04:20 +08:00
|
|
|
spwdM.append("rm");//干扰
|
2026-09-28 15:28:50 +08:00
|
|
|
|
|
|
|
|
CString sPwd;
|
|
|
|
|
sPwd = spwdM.c_str();
|
|
|
|
|
::WritePrivateProfileString(_T("Product"), _T("Password"), sPwd, sProductIni);
|
|
|
|
|
|
|
|
|
|
//database
|
|
|
|
|
::WritePrivateProfileString(_T("Product"), _T("Database"), m_sDatabase, sProductIni);
|
|
|
|
|
|
2026-10-04 00:04:20 +08:00
|
|
|
AfxMessageBox(_T("数据库配置信息保存完成!"));
|
2026-09-28 15:28:50 +08:00
|
|
|
|
|
|
|
|
OnOK();
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
2026-10-04 00:04:20 +08:00
|
|
|
AfxMessageBox(_T("数据库没有连接测试,请检查执行连接测试!"));
|
2026-09-28 15:28:50 +08:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
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))
|
|
|
|
|
{
|
2026-10-04 00:04:20 +08:00
|
|
|
AfxMessageBox(_T("连接测试失败,请检查数据库连接设置!"));
|
2026-09-28 15:28:50 +08:00
|
|
|
delete pMySQLDb;
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
2026-10-04 00:04:20 +08:00
|
|
|
AfxMessageBox(_T("连接测试成功!"));
|
2026-09-28 15:28:50 +08:00
|
|
|
|
|
|
|
|
CString sText;
|
|
|
|
|
m_wndLJCSBT.GetWindowText(sText);
|
|
|
|
|
|
2026-10-04 00:04:20 +08:00
|
|
|
sText.TrimRight(_T("√"));
|
|
|
|
|
sText += _T("√");
|
2026-09-28 15:28:50 +08:00
|
|
|
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))
|
|
|
|
|
{
|
2026-10-04 00:04:20 +08:00
|
|
|
AfxMessageBox(_T("连接失败,请运行数据库连接测试命令!"));
|
2026-09-28 15:28:50 +08:00
|
|
|
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;
|
|
|
|
|
|
2026-10-04 00:04:20 +08:00
|
|
|
//去除干扰
|
2026-09-28 15:28:50 +08:00
|
|
|
CString sVal = szVal;
|
|
|
|
|
sVal.TrimRight(_T("sh"));
|
|
|
|
|
_tcscpy(szVal,sVal);
|
|
|
|
|
std::string suser = (LPCSTR)_bstr_t((LPCTSTR)szVal);
|
|
|
|
|
|
2026-10-04 00:04:20 +08:00
|
|
|
//解密
|
2026-09-28 15:28:50 +08:00
|
|
|
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;
|
|
|
|
|
|
2026-10-04 00:04:20 +08:00
|
|
|
//去除干扰
|
2026-09-28 15:28:50 +08:00
|
|
|
sVal = szVal;
|
|
|
|
|
sVal.TrimRight(_T("rm"));
|
|
|
|
|
_tcscpy(szVal,sVal);
|
|
|
|
|
|
|
|
|
|
std::string spwd = (LPCSTR)_bstr_t((LPCTSTR)szVal);
|
2026-10-04 00:04:20 +08:00
|
|
|
//解密
|
2026-09-28 15:28:50 +08:00
|
|
|
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) )
|
|
|
|
|
{
|
2026-10-04 00:04:20 +08:00
|
|
|
AfxMessageBox(_T("数据库配置不正确,请执行数据库连接测试命令!"));
|
2026-09-28 15:28:50 +08:00
|
|
|
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))
|
|
|
|
|
{
|
2026-10-04 00:04:20 +08:00
|
|
|
AfxMessageBox(_T("连接失败,请运行数据库连接测试命令!"));
|
2026-09-28 15:28:50 +08:00
|
|
|
delete pMySQLDb;
|
|
|
|
|
return NULL;
|
|
|
|
|
}
|
|
|
|
|
return pMySQLDb;
|
|
|
|
|
}
|