设为首页 加入收藏

TOP

3.9.6 数据库备份界面的实现
2013-10-07 14:51:22 来源: 作者: 【 】 浏览:66
Tags:3.9.6 数据库 备份 面的 实现

3.9.6  数据库备份界面的实现

备份界面允许用户改变路径来保存备份文件。改变路径按钮实现代码参考如下:

代码位置:见光盘中本章源代码的BACKUPDLG类。

  1. 1  void BACKUPDLG::OnButton1()  
  2. 2  {  
  3. 3      CFileDialog cfile(FALSE,"bak",NULL,OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,  
  4. 4       "备份文件(*.bak)|*.bak|All Files (*.*)|*.*||");     //打开【文件】对话框  
  5. 5   if(cfile.DoModal()==IDOK)                               //单击【确定】按钮  
  6. 6   {  
  7. 7      CString str;  
  8. 8      str=cfile.GetPathName();                         //获取路径名称  
  9. 9         if(str!="")  
  10. 10           m_edit=str;                                    //保存路径  
  11. 11         UpdateData(false);                                   //编辑框输出显示  
  12. 12      }  
  13. 13      else return;  
  14. 14  }  

第3行代码实现打开对话框的信息的设置,默认打开扩展名为bak的文件,也可以选择显示所有文件(*.*),如果不选择则默认为"F:\\huchao.bak"。

第8行代码获取用户选择的路径名,并通过编辑框显示。

设置好路径和备份名,单击【备份】按钮执行备份,本系统实现了保存多个备份文件的功能,代码中实现了获取备份文件的序号,备份语句的构造,具体实现代码如下:

代码位置:见光盘中本章源代码的BACKUPDLG类。

  1. 1  void BACKUPDLG::OnButton3()  
  2. 2  {  
  3. 3       if(MessageBox("确定备份?","系统提示",MB_ICONQUESTION|MB_YESNO)==6)  
  4. 4   {  
  5. 5      CString sqlstr,a;  
  6. 6         if(m_edit)  
  7. 7      {  
  8. 8          try  
  9. 9          {  
  10. 10                 sqlstr.Format("select Max(id) as maxid from tb_backup");                                                             //构造查询语句  
  11. 11                 _RecordsetPtr rs=NULL;  
  12. 12                 rs.CreateInstance(__uuidof(Recordset));  //记录集初始化  
  13. 13                 rs->Open((_variant_t )sqlstr,m_connection.GetInterfacePtr(),  
  14. 14                          adOpenDynamic,adLockOptimistic,adCmdText);                                                                  //打开表,执行查询  
  15. 15                 a=(LPCSTR)(_bstr_t)rs->Fields->GetItem("maxid")->Value;                                                              //获取当前最大的备份号  
  16. 16                 int b=atoi(a);                           //数据类型转换  
  17. 17                 b++;                                 //备份号加1  
  18. 18                 sqlstr.Format("insert into tb_backup values (%d,'%s','%s')",b,  
  19. 19                 CTime::GetCurrentTime().Format("%Y-%m-%d"),m_edit);                                                                  //构造插入语句  
  20. 20                 rs=NULL;  
  21. 21                 rs.CreateInstance(__uuidof(Recordset));  
  22. 22                 rs->Open((_variant_t )sqlstr,m_connection.GetInterfacePtr(),  
  23. 23                 adOpenDynamic,adLockOptimistic,adCmdText);  
  24. 24                 sqlstr.Format("backup database Sales to disk='%s'",m_edit);                                                          //构造备份语句  
  25. 25              m_connection->Execute((_bstr_t)sqlstr,NULL,adCmdUnknown);                                                               //执行备份操作  
  26. 26                  MessageBox("备份成功!");  
  27. 27                 m_connection->Close();                   //断开连接  
  28. 28                 CDialog::OnOK();  
  29. 29             }  
  30. 30             catch(...)  
  31. 31             {  
  32. 32                 MessageBox("备份失败!");  
  33. 33                 return;  
  34. 34             }  
  35. 35         }  
  36. 36      }  
  37. 37      else return;  
  38. 38  }  

第10行代码实现了获取备份文件中最大的序号。

第18~19行代码实现保存备份的序号、时间、文件名。

第24~25行代码实现数据库Sales的备份。

第30~34行代码实现备份出错信息的提醒。

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇3.8.2 库存模块技术分析 下一篇3.9.5 用户管理界面的实现(3)

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: