ADOConn.cpp
上传用户:biney012
上传日期:2022-05-09
资源大小:4592k
文件大小:3k
源码类别:

数据库系统

开发平台:

Visual C++

  1. // ADOConn.cpp: implementation of the ADOConn class.
  2. //
  3. //////////////////////////////////////////////////////////////////////
  4. #include "stdafx.h"
  5. #include "ADOConn.h"
  6. #ifdef _DEBUG
  7. #undef THIS_FILE
  8. static char THIS_FILE[]=__FILE__;
  9. #define new DEBUG_NEW
  10. #endif
  11. //////////////////////////////////////////////////////////////////////
  12. // Construction/Destruction
  13. //////////////////////////////////////////////////////////////////////
  14. ADOConn::ADOConn()
  15. {
  16. }
  17. ADOConn::~ADOConn()
  18. {
  19. }
  20. // 初始化—连接数据库
  21. void  ADOConn::OnInitADOConn()
  22. {
  23. // 初始化OLE/COM库环境 
  24. ::CoInitialize(NULL);
  25.   
  26. try
  27. {
  28. // 创建Connection对象
  29. m_pConnection.CreateInstance("ADODB.Connection");
  30. // 设置连接字符串,必须是BSTR型或者_bstr_t类型
  31. _bstr_t strConnect = "Provider=SQLOLEDB; Server=ntserver;Database=Stock; uid=sa; pwd=sa;";
  32. m_pConnection->Open(strConnect,"","",adModeUnknown);
  33. }
  34. // 捕捉异常
  35. catch(_com_error e)
  36. {
  37. // 显示错误信息
  38. AfxMessageBox(e.Description());
  39. }
  40. }
  41. // 执行查询
  42. _RecordsetPtr&  ADOConn::GetRecordSet(_bstr_t bstrSQL)
  43. {
  44. try
  45. {
  46. // 连接数据库,如果Connection对象为空,则重新连接数据库
  47. if(m_pConnection==NULL)
  48. OnInitADOConn();
  49. // 创建记录集对象
  50. m_pRecordset.CreateInstance(__uuidof(Recordset));
  51. // 取得表中的记录
  52. m_pRecordset->Open(bstrSQL,m_pConnection.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText);
  53. }
  54. // 捕捉异常
  55. catch(_com_error e)
  56. {
  57. // 显示错误信息
  58. AfxMessageBox(e.Description());
  59. }
  60. // 返回记录集
  61. return m_pRecordset;
  62. }
  63.  // 执行SQL语句,Insert Update _variant_t
  64. BOOL ADOConn::ExecuteSQL(_bstr_t bstrSQL)
  65. {
  66. // _variant_t RecordsAffected;
  67. try
  68. {
  69. // 是否已经连接数据库
  70. if(m_pConnection == NULL)
  71. OnInitADOConn();
  72. // Connection对象的Execute方法:(_bstr_t CommandText, 
  73. // VARIANT * RecordsAffected, long Options ) 
  74. // 其中CommandText是命令字串,通常是SQL命令。
  75. // 参数RecordsAffected是操作完成后所影响的行数, 
  76. // 参数Options表示CommandText的类型:adCmdText-文本命令;adCmdTable-表名
  77. // adCmdProc-存储过程;adCmdUnknown-未知
  78. m_pConnection->Execute(bstrSQL,NULL,adCmdText);
  79. return true;
  80. }
  81. catch(_com_error e)
  82. {
  83. AfxMessageBox(e.Description());
  84. return false;
  85. }
  86. }
  87. void ADOConn::ExitConnect()
  88. {
  89. // 关闭记录集和连接
  90. if (m_pRecordset != NULL)
  91. m_pRecordset->Close();
  92. m_pConnection->Close();
  93. // 释放环境
  94. ::CoUninitialize();
  95. }
  96. void ADOConn::Backup()
  97. {
  98. //连接数据库
  99. OnInitADOConn();
  100. _bstr_t vSQL;
  101. vSQL = "backup database Stock to disk= 'C:\BackUp\Stock.bak'";
  102. ExecuteSQL(vSQL);
  103. //关闭数据库
  104. ExitConnect();
  105. }
  106. void ADOConn::Restore()
  107. {
  108. // @@@@  创建到Master数据库的连接  
  109. try
  110. {
  111. // 创建Connection对象
  112. m_pConnection.CreateInstance("ADODB.Connection");
  113. // 设置连接字符串,必须是BSTR型或者_bstr_t类型
  114. _bstr_t strConnect = "Provider=SQLOLEDB; Server=ntserver;Database=master; uid=sa; pwd=sa;";
  115. m_pConnection->Open(strConnect,"","",adModeUnknown);
  116. }
  117. // 捕捉异常
  118. catch(_com_error e)
  119. {
  120. // 显示错误信息
  121. AfxMessageBox(e.Description());
  122. }
  123. _bstr_t vSQL;
  124. vSQL = "restore database Stock from disk= 'C:\BackUp\Stock.bak'";
  125. m_pConnection->Execute(vSQL,NULL,adCmdText);
  126. }