zoukankan      html  css  js  c++  java
  • ADO-添加msado15.dll及基本类对象的了解

    一、dll文件的导入

    参考文献:https://blog.csdn.net/qq_31209383/article/details/51199762

    要使用数据库,首先在stdafx.h中导入msado15.dll

    #import #import "C:/Program Files/Common Files/System/ADO/msado15.dll" no_namespace rename("EOF","adoEOF")

    但这样会报错,解决办法如上面链接:

    方法一:使用命名空间;

    方法二:不使用命名空间,但将所有报错的重定义名称rename一下;

    方法三:project -> setting -> C/C++ ->perprocessor ->perprocessor definitions :  里面添加 宏   _AFX_NO_DAO_SUPPORT

    二、_ConnectionPtr、_RecordPtr是什么

    这是微软封装好的智能指针,供调用数据库使用。这两个指针,即是类又是指针。

    作为类,使用.操作符,这时候调用的是该类自己的方法,如pCon.CreateInstance("ADODB.Connection")就是创建实现一个com组件内的Connection对象,并将该对象的指针赋值给pCon,此时pCon就是一个接口指针了,此时就用->操作符。

    三、Connection、_Connection与_ConnectionPtr之间的区别

    _Connection是Connection的接口,是个struct结构,后者实现了前者。

    _ConnectionPtr是对_Connection封装后的智能指针,_com_ptr_t,智能指针实质上也是个类,是对指针进行了封装;

    Connection是COM组件类,即有CoClass属性;

    前两者是指针,后者是类。

    四、COM与MFC之间数据转化问题

    MFC内的数据结构(字符串,数字等)必须转化成满足COM结构的数据类型才能被COM的函数使用。

    _bst_r,VARIANT,CComBSTR,CComVariant都是把MFC转化成COM数据类型的类或类型。

    五、Close()与Release()的区别

    Close()只是关闭通道,并不释放内存资源

    Release(),释放对接口指针的引用。打开一个通道前必须检查上一个通道关闭并释放资源(查看pCon==NULL),如果没有,必须释放,否则无法使用。

    因此Close()不是必须的,Release()是。

  • 相关阅读:
    Excel中的日期时间计算,套路很全
    WPS表格 制作甘特图
    关于海康威视与Unity3d集成冲突问题解决
    海康威视(iOS集成)
    Objective-C
    Android中windowTranslucentStatus与windowTranslucentNavigation的一些设置(转)
    Could not symlink include/node/android-ifaddrs.h
    dyld`__abort_with_payload:
    about the libiconv.2.dylib
    Intent的作用和表现形式简单介绍
  • 原文地址:https://www.cnblogs.com/zhuluqing/p/8968794.html
Copyright © 2011-2022 走看看