Files
gjm 164968b62e chore
把非utf8-bom编码的cpp/h文件改为 utf8 bom 编码, msvc识别utf8编码时,如果不是bom格式的,会使用当前cp_oem来解码.
2026-10-04 00:04:20 +08:00

178 lines
3.9 KiB
C++

#include "stdafx.h"
#include "JSJKDlg.h"
IMPLEMENT_DYNAMIC(CJSJKDlg, CDialog)
CJSJKDlg::CJSJKDlg(CWnd* pParent /*=NULL*/)
: CDialog(CJSJKDlg::IDD, pParent)
, m_sPassword(_T("SHAdministrator"))
, m_sUser(_T("sa"))
, m_sSQLSrv(_T("192.168.1.2\\SH_EARTHWORM"))
, m_sPassword2(_T(""))
{
m_bMasterCntSuccess = false;
}
CJSJKDlg::~CJSJKDlg()
{
}
void CJSJKDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
DDX_Text(pDX, IDC_EDIT1,m_sPassword2);
DDX_Text(pDX, IDC_EDITSA, m_sUser);
DDX_Text(pDX, IDC_EDIT5, m_sSQLSrv);
DDX_Text(pDX, IDC_EDITPASSWORD, m_sPassword);
DDX_Control(pDX, IDC_BTCONNECTTEST, m_wndBT);
}
BEGIN_MESSAGE_MAP(CJSJKDlg, CDialog)
ON_BN_CLICKED(IDOK, &CJSJKDlg::OnBnClickedOk)
ON_BN_CLICKED(IDC_BTINSDB, &CJSJKDlg::OnBnClickedBtinsdb)
ON_BN_CLICKED(IDC_BTCONNECTTEST, &CJSJKDlg::OnBnClickedBtconnecttest)
END_MESSAGE_MAP()
BOOL CJSJKDlg::OnInitDialog()
{
CDialog::OnInitDialog();
UpdateData(FALSE);
return TRUE;
}
void CJSJKDlg::OnBnClickedOk()
{
UpdateData();
if (m_sPassword2.CompareNoCase(_T("ShanghuaSoft")) != 0)
{
AfxMessageBox(_T("建数据库许可密码不正确"));
return;
}
OnOK();
}
BOOL CJSJKDlg::CreateSQLDb()
{
if (!m_bMasterCntSuccess)
{
AfxMessageBox(_T("主数据库没有连接测试或不通过!请执行连接测试!"));
return FALSE;
}
CString sFullPath = FilePath::GetSysDir() + _T("\\SQLConnectTest\\SH-EarthWorm.sql");
::CoInitialize(NULL);
//连接后执行sql 脚本
CString sSQL;
sSQL.Format(_T("Provider=sqloledb;Data Source=%s;Initial Catalog=%s;User Id=%s;Password=%s;"),
m_sSQLSrv,_T("master"),m_sUser,m_sPassword);
if (m_dbSQRemo.InitSQLServer(sSQL))
{
sSQL = _T("select count(*) From master.dbo.sysdatabases where name='SH_EarthWorm'");
if ( !m_dbSQRemo.IsSelEmpty(sSQL) )
{
int nRes = AfxMessageBox(_T("上华专业数据库已经存在!是否删除重建?"),MB_YESNO);
if (nRes == IDNO)
{
return TRUE;
}
else
{
//先删除
sSQL = _T("DROP DATABASE SH_EarthWorm");
m_dbSQRemo.ExecuteSQL(sSQL);
}
}
//判断数据库是否存在
sSQL = _T("Create database SH_EarthWorm");
if ( m_dbSQRemo.ExecuteSQL(sSQL) )
{
//创建表
CStdioFile file;
if(!file.Open(sFullPath,CFile::modeRead | CFile::typeText))
{
AfxMessageBox(_T("读取专业数据库安装文件失败!"));
return FALSE;
}
CString strSql,strRead;
strSql.Empty();
while(file.ReadString(strRead))
{
if(strRead.Trim().CompareNoCase(_T("GO"))==0)
{
if(!strSql.IsEmpty())
{
if(! m_dbSQRemo.ExecuteSQL(strSql) )
{
return FALSE;
}
strSql.Empty();
}
}
else
{
strSql+=_T(" ")+strRead;
}
}
file.Close();
AfxMessageBox(_T("创建专业数据库成功!"));
EndDialog(IDOK);
}
else//创建失败
{
AfxMessageBox(_T("创建上华专业数据库失败!或上华专业数据库已经存在!"));
return FALSE;
}
}
else //数据库已经存在
{
AfxMessageBox(_T("专业数据库已经存在!不需要创建!"));
}
return TRUE;
}
void CJSJKDlg::OnBnClickedBtinsdb()
{
CreateSQLDb();
}
void CJSJKDlg::OnBnClickedBtconnecttest()
{
UpdateData();
CString sVal;
if (m_sSQLSrv.IsEmpty() || m_sUser.IsEmpty() || m_sPassword.IsEmpty())
{
AfxMessageBox(_T("请输入完整的服务器名称、账号、密码!"));
return;
}
//_bstr_t strCnn("Provider=sqloledb;Data Source=MyServer;"
//"Initial Catalog=pubs;User Id=sa;Password=;");
CString sConnect;
sConnect.Format(_T("Provider=sqloledb;Data Source=%s;Initial Catalog=%s;User Id=%s;Password=%s;"),
m_sSQLSrv,_T("master"),m_sUser,m_sPassword);
if (m_dbSQRemo.InitSQLServer(sConnect))
{
CString sText;
m_wndBT.GetWindowText(sText);
sText += _T("√");
m_wndBT.SetWindowText(sText);
AfxMessageBox(_T("主数据库连接测试通过!"));
m_bMasterCntSuccess = true;
}
else
{
AfxMessageBox(_T("主数据库连接测试没有通过!请与数据库管理员联系?"));
}
}