#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("主数据库连接测试没有通过!请与数据库管理员联系?")); } }