• MFC ADO使用


    MFC ADO使用

    1.导入ADO链接库

    #import "C:/Program Files/Common Files/System/ado/msado15.dll"no_namespace rename("EOF", "adoEOF")rename("BOF", "adoBOF") //两行写一行,写在stdafx.h文件末尾 。C为系统盘。

     

    2.ADO封装

    工程中引入以下两文件。

    1. //ADO.h  
    2. #pragma once  
    3.   
    4. class ADO  
    5. {  
    6.  public:  
    7.      ADO(void);  
    8.     ~ADO(void);  
    9.     void OnInitADOConn(void);  
    10.     void CloseRecordset(void);  
    11.     void CloseConn(void);  
    12.     UINT GetRecordCount(_RecordsetPtr pRecordset);  
    13.  public:  
    14.     _ConnectionPtr m_pConnection;  
    15.     _RecordsetPtr m_pRecordset;  
    16.     _RecordsetPtr& OpenRecordset(CString sql);  
    17.  };  

    1. //ADO.cpp  
    2. #include "StdAfx.h"  
    3. #include "ADO.h"  
    4. ADO::ADO(void)  
    5. {  
    6. }  
    7. ADO::~ADO(void)  
    8. {  
    9. }  
    10. void ADO::OnInitADOConn(void)  
    11. {  
    12.    
    13.      ::CoInitialize(NULL);  
    14.      try  
    15.      {  
    16.         m_pConnection.CreateInstance("ADODB.Connection");  
    17.         _bstr_tstrConnect = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source = Media.mdb";      //data source后添数据库文件相对路径或绝对路径均可。  
    18.             m_pConnection->Open(strConnect,"","",adModeUnknown);  
    19.      }  
    20.    
    21.      catch(_com_errort)  
    22.      {  
    23.         AfxMessageBox(t.Description());  
    24.      }  
    25. }  
    26.    
    27.    
    28. _RecordsetPtr& ADO::OpenRecordset(CString sql)  
    29. {  
    30.      //TODO: insertreturn statement here  
    31.      ASSERT(!sql.IsEmpty());  
    32.      try  
    33.      {  
    34.          m_pRecordset.CreateInstance(__uuidof(Recordset));  
    35.          m_pRecordset->Open(_bstr_t(sql), m_pConnection.GetInterfacePtr(),adOpenDynamic, adLockOptimistic, adCmdText);  
    36.      }  
    37.      catch(_com_errort)  
    38.      {  
    39.          AfxMessageBox(t.Description());  
    40.      }  
    41.      returnm_pRecordset;  
    42. }  
    43. void ADO::CloseRecordset(void)  
    44. {  
    45.     if(m_pRecordset->GetState() == adStateOpen)  
    46.         m_pRecordset->Close();  
    47. }  
    48. void ADO::CloseConn(void)  
    49. {  
    50.      m_pConnection->Close();  
    51.      ::CoUninitialize();  
    52. }  
    53. UINT ADO::GetRecordCount(_RecordsetPtr pRecordset)  
    54. {  
    55.      int count = 0;  
    56.      try  
    57.      {  
    58.         pRecordset->MoveFirst();  
    59.      }  
    60.      catch(...)  
    61.      {  
    62.         return 0;  
    63.      }  
    64.        
    65.      if(pRecordset->adoEOF)  
    66.         return 0;  
    67.      while(!pRecordset->adoEOF)   
    68.      {  
    69.         pRecordset->MoveNext();  
    70.         count = count +1;  
    71.      }  
    72.      pRecordset->MoveFirst();  
    73.      return count;  
    74. }  

    3.使用案例

    1.创建连接实例并打开记录集 

    1. ADO m_ado;  
    2. m_ado.OnInitADOConn();  
    3. CString sql ="select * from MediaInfo order by id desc";  
    4. m_ado.m_pRecordset= m_ado.OpenRecordset(sql);  

     2.读入数据操作view plai

    1. ADO m_ado;  
    2. m_ado.OnInitADOConn();  
    3. CString sql = "select * from MediaInfo  order by id ";  
    4. m_ado.m_pRecordset = m_ado.OpenRecordset(sql);  
    5. while (!m_ado.m_pRecordset->adoEOF)  
    6. {  
    7.     m_show.InsertItem(0,"");  
    8.     m_show.SetItemText(0,0,(char*)(_bstr_t)m_ado.m_pRecordset->GetCollect("id"));  
    9.     m_show.SetItemText(0,1,(char*)(_bstr_t)m_ado.m_pRecordset->GetCollect("mediaName"));  
    10.     m_show.SetItemText(0,2,(char*)(_bstr_t)m_ado.m_pRecordset->GetCollect("mediaPath"));  
    11.     m_ado.m_pRecordset->MoveNext();  
    12. }  
    13. m_ado.CloseRecordset();  
    14. m_ado.CloseConn();  
    15.    
    3.向数据库中添加数据

    1. m_ado.m_pRecordset->AddNew();  
    2. m_ado.m_pRecordset->PutCollect("mediaName ",(_bstr_t)m_ mediaName);  
    3. m_ado.m_pRecordset->PutCollect("mediaPath ",(_bstr_t)m_ mediaPath);  
    4. m_ado.m_pRecordset->Update();  

    4.修改数据

    1. m_ado.m_pRecordset->Move((long)position, vtMissing);  
    2. m_ado.m_pRecordset->PutCollect("id",(_bstr_t)m_id);  
    5.删除一条记录

    1. m_ado.m_pRecordset->Move(position, vtMissing);  
    2. m_ado.m_pRecordset->Delete(adAffectCurrent);  
  • 相关阅读:
    JS中的call_user_func封装
    js中insertAdjacentHTML的玩法
    小tip: DOM appendHTML实现及insertAdjacentHTML
    js获取和设置属性的方法
    安装Yeoman,遇到的问题
    HTML中Select的使用详解
    jQuery Ajax异步处理Json数据详解
    chrome浏览器Uncaught TypeError: object is not a function问题解决
    SpringBoot Web实现文件上传下载功能实例解析
    SpringMVC Web实现文件上传下载功能实例解析
  • 原文地址:https://www.cnblogs.com/seebro/p/2476535.html
Copyright © 2020-2023  润新知