📄 backuprecovery.cpp
字号:
// BackupRecovery.cpp : implementation file
//
#include "stdafx.h"
#include "salarymanagement.h"
#include "BackupRecovery.h"
#include "USkin.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CBackupRecovery dialog
CBackupRecovery::CBackupRecovery(CWnd* pParent /*=NULL*/)
: CDialog(CBackupRecovery::IDD, pParent)
{
//{{AFX_DATA_INIT(CBackupRecovery)
m_lpzFileName = _T("");
m_recovery = 0;
m_style = 0;
//}}AFX_DATA_INIT
m_hIcon=AfxGetApp()->LoadIcon(IDI_BACKUP);
m_bOpen=FALSE;
m_ado.OnInitADOConn();
}
CBackupRecovery::~CBackupRecovery()
{
m_ado.ExitConnect();
}
void CBackupRecovery::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CBackupRecovery)
DDX_Text(pDX, IDC_EDIT1, m_lpzFileName);
DDX_Radio(pDX, IDC_RADIO1, m_recovery);
DDX_Radio(pDX, IDC_RADIO3, m_style);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CBackupRecovery, CDialog)
//{{AFX_MSG_MAP(CBackupRecovery)
ON_BN_CLICKED(IDC_OPENFILE, OnOpenfile)
ON_WM_DESTROY()
ON_BN_CLICKED(IDC_RADIO3, OnRadio3)
ON_BN_CLICKED(IDC_RADIO4, OnRadio4)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CBackupRecovery message handlers
extern CSalaryManagementApp theApp;
BOOL CBackupRecovery::OnInitDialog()
{
CDialog::OnInitDialog();
CString str=theApp.m_CurrentDirectory+"\\Skin\\3.u3";
USkinLoadSkin(str);
CenterWindow(CWnd::GetDesktopWindow());
SetIcon(m_hIcon,TRUE);
SetIcon(m_hIcon,FALSE);
return TRUE;
}
void CBackupRecovery::OnOK()
{
UpdateData();
//拷贝文件
SHFILEOPSTRUCT fileop;
fileop.hwnd = m_hWnd;
fileop.wFunc = FO_COPY;
fileop.fFlags= FOF_NOCONFIRMATION|FOF_ALLOWUNDO;
if(m_style==0)
m_lpzFileName="C:\\Windows\\System32\\SalaryManagement.mdb";
if(m_lpzFileName=="")
{
AfxMessageBox("请选择文件!");
return;
}
//数据库备份
if(m_recovery==0)
{
ASSERT(m_recovery==0);
fileop.pFrom = theApp.m_DBFileName;
fileop.pTo = m_lpzFileName;
CFileFind find;
int IsFinded =find.FindFile(m_lpzFileName);
if(IsFinded)
{
if(IDYES==AfxMessageBox("备份已经存在,是否覆盖?",MB_YESNO))
//存在,则先把原先的备份文件删除,再备份
DeleteFile(m_lpzFileName);
else return;
}
if(SHFileOperation(&fileop) != 0)
{
MessageBox("数据库备份失败","工资管理系统");
}
else MessageBox("数据备份完成","工资管理系统");
/* CString str;
str.Format("backup database EarthData to disk='%s'",m_lpzFileName);
m_ado.ExecuteSQL((_bstr_t)str);
//关闭数据库
ExitConnect();
str.Format("数据已备份至 %s",m_lpzFileName);
AfxMessageBox(str);*/
}
else
{
fileop.pFrom = m_lpzFileName;
fileop.pTo = theApp.m_DBFileName;
if(SHFileOperation(&fileop) != 0)
{
MessageBox("数据库恢复失败","工资管理系统");
}
else MessageBox("数据恢复完成","工资管理系统");
/* // 创建到Master数据库的连接 ,注意是master数据库
try
{
// 创建Connection对象
m_pConnection.CreateInstance("ADODB.Connection");
// 设置连接字符串,必须是BSTR型或者_bstr_t类型
_bstr_t strConnect = "Provider=SQLOLEDB; Server=ntserver;Database=master; uid=sa; pwd=sa;";
m_pConnection->Open(strConnect,"","",adModeUnknown);
}
// 捕捉异常
catch(_com_error e)
{
// 显示错误信息
AfxMessageBox(e.Description());
}
_bstr_t vSQL;
vSQL = "restore database Stock from disk= 'C:\EarthData.bak'";
m_pConnection->Execute(vSQL,NULL,adCmdText);
*/
}
}
void CBackupRecovery::OnOpenfile()
{
UpdateData();
CString str;
if(m_recovery==0)
{
str="请选择备份文件夹";
m_bOpen=FALSE;
}
else
{
str="请选择要用来恢复的文件";
m_bOpen=TRUE;
}
CString lpszFilter="Access数据库文件(*.mdb)|*.mdb||";
CFileDialog dlg(m_bOpen,NULL,NULL,
OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,(LPCTSTR)lpszFilter);
dlg.m_ofn.lpstrTitle=str;
try{
if(IDOK==dlg.DoModal())
{
m_lpzFileName=dlg.GetPathName();
if(m_lpzFileName.Right(4)!=".mdb")
m_lpzFileName+=".mdb";
UpdateData(FALSE);
}
}
catch(CMemoryException *e)
{
char error[MAX_PATH];
e->GetErrorMessage(error,MAX_PATH);
AfxMessageBox(error);
delete e;
}
}
void CBackupRecovery::OnDestroy()
{
CDialog::OnDestroy();
USkinRemoveSkin();
theApp.m_pMainWnd->SetWindowPos(&wndTop,
0,0,0,0,SWP_NOMOVE|SWP_NOSIZE|SWP_SHOWWINDOW);
}
void CBackupRecovery::OnRadio3()
{
m_style=0;
GetDlgItem(IDC_EDIT1)->EnableWindow(FALSE);
GetDlgItem(IDC_OPENFILE)->EnableWindow(FALSE);
}
void CBackupRecovery::OnRadio4()
{
m_style=1;
GetDlgItem(IDC_EDIT1)->EnableWindow(TRUE);
GetDlgItem(IDC_OPENFILE)->EnableWindow(TRUE);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -