DALMyBools.cpp
上传用户:weisheen
上传日期:2022-07-09
资源大小:19390k
文件大小:4k
源码类别:

ActiveX/DCOM/ATL

开发平台:

Visual C++

  1. // DALMyBools.cpp : Implementation of CDALMyBools
  2. #include "stdafx.h"
  3. #include "BooksDAL.h"
  4. #include "DALMyBools.h"
  5. /////////////////////////////////////////////////////////////////////////////
  6. // CDALMyBools
  7. STDMETHODIMP CDALMyBools::InterfaceSupportsErrorInfo(REFIID riid)
  8. {
  9. static const IID* arr[] = 
  10. {
  11. &IID_IDALMyBools
  12. };
  13. for (int i=0; i < sizeof(arr) / sizeof(arr[0]); i++)
  14. {
  15. if (InlineIsEqualGUID(*arr[i],riid))
  16. return S_OK;
  17. }
  18. return S_FALSE;
  19. }
  20. STDMETHODIMP CDALMyBools::GetBookByIsbn(UINT bookisbn, DTOBook **mybook)
  21. {
  22. AFX_MANAGE_STATE(AfxGetStaticModuleState())
  23. // TODO: Add your implementation code here
  24. _ConnectionPtr conn=this->GetMyConn();//自定义的连接函数
  25. *mybook=(DTOBook*)::CoTaskMemAlloc(sizeof(DTOBook));//开辟空间
  26. _CommandPtr sqlobj;
  27. sqlobj.CreateInstance(__uuidof(Command));//生成实例
  28. sqlobj->CommandText=(_bstr_t)this->m_sqlQueryById;//在构造函数那初始化了
  29. sqlobj->CommandType=adCmdText;
  30. sqlobj->ActiveConnection=conn;
  31. _ParameterPtr para1=sqlobj->CreateParameter("id",adInteger,adParamInput,4);
  32. para1->Value=_variant_t((long)bookisbn);
  33. sqlobj->Parameters->Append(para1);
  34. _RecordsetPtr data=sqlobj->Execute(NULL,NULL,adCmdText);
  35. if(!data->adEOF)
  36. {
  37. (*mybook)->BookIsnb=(UINT)(long)(data->GetCollect("bookisnb"));
  38. _variant_t vtname=data->GetCollect("bookname");
  39. (*mybook)->BookName=::SysAllocString(vtname.bstrVal);
  40. _variant_t vtauthor=data->GetCollect("bookauthor");
  41. (*mybook)->BookName=::SysAllocString(vtauthor.bstrVal);
  42. }
  43. return S_OK;
  44. }
  45. STDMETHODIMP CDALMyBools::QueryAllBook(DTOBook **allBook)
  46. {
  47. AFX_MANAGE_STATE(AfxGetStaticModuleState())
  48. // TODO: Add your implementation code here
  49. return S_OK;
  50. }
  51. STDMETHODIMP CDALMyBools::SaveBook(DTOBook *bookdata, UINT *pResult)
  52. {
  53. AFX_MANAGE_STATE(AfxGetStaticModuleState())
  54. // TODO: Add your implementation code here
  55. return S_OK;
  56. }
  57. STDMETHODIMP CDALMyBools::DeleteBookById(UINT id, UINT *iResult)
  58. {
  59. AFX_MANAGE_STATE(AfxGetStaticModuleState())
  60. // TODO: Add your implementation code here
  61. return S_OK;
  62. }
  63. STDMETHODIMP CDALMyBools::Update(DTOBook *Book, UINT *iResult)
  64. {
  65. AFX_MANAGE_STATE(AfxGetStaticModuleState())
  66. // TODO: Add your implementation code here
  67. return S_OK;
  68. }
  69. STDMETHODIMP CDALMyBools::get_UID(BSTR *pVal)
  70. {
  71. AFX_MANAGE_STATE(AfxGetStaticModuleState())
  72. // TODO: Add your implementation code here
  73. return S_OK;
  74. }
  75. STDMETHODIMP CDALMyBools::put_UID(BSTR newVal)
  76. {
  77. AFX_MANAGE_STATE(AfxGetStaticModuleState())
  78. // TODO: Add your implementation code here
  79. this->m_UID=CString(newVal);
  80. ::SysFreeString(newVal);
  81. return S_OK;
  82. }
  83. STDMETHODIMP CDALMyBools::get_PWD(BSTR *pVal)
  84. {
  85. AFX_MANAGE_STATE(AfxGetStaticModuleState())
  86. // TODO: Add your implementation code here
  87. return S_OK;
  88. }
  89. STDMETHODIMP CDALMyBools::put_PWD(BSTR newVal)
  90. {
  91. AFX_MANAGE_STATE(AfxGetStaticModuleState())
  92. // TODO: Add your implementation code here
  93. this->m_PWD=CString(newVal);
  94. ::SysFreeString(newVal);
  95. return S_OK;
  96. }
  97. STDMETHODIMP CDALMyBools::get_DataSource(BSTR *pVal)
  98. {
  99. AFX_MANAGE_STATE(AfxGetStaticModuleState())
  100. // TODO: Add your implementation code here
  101. return S_OK;
  102. }
  103. STDMETHODIMP CDALMyBools::put_DataSource(BSTR newVal)
  104. {
  105. AFX_MANAGE_STATE(AfxGetStaticModuleState())
  106. // TODO: Add your implementation code here
  107. this->m_DataSource=CString(newVal);
  108. ::SysFreeString(newVal);
  109. return S_OK;
  110. }
  111. _ConnectionPtr CDALMyBools::GetMyConn()
  112. {
  113. CString strFormat="Provider=OraOLEDB.Oracle.1;User Id=%s;Data Source=%s";
  114. CString str;
  115. str.Format(strFormat,this->m_UID,this->m_DataSource);
  116. _ConnectionPtr mytools;
  117. mytools.CreateInstance(__uuidof(Connection));
  118. mytools->Open(_bstr_t(str),"",_bstr_t(this->m_PWD),-1);
  119. return mytools;
  120. }