不知道.net里面有没有CAdo
好像有的

解决方案 »

  1.   

    你好,你是用MFC还是SDK?能说明白一点吗?
      

  2.   

    to:xiaoxiaohan(萧晓寒)
    有区别吗?
      

  3.   

    打包之后,import#中的路径会影响它的运行吗?
      

  4.   

    可以用ado控件,不过我不知如何操作Grid
    望高手指点
      

  5.   

    有很多的办法:
    只不过#import是最好用的,其他比较好的还有:
    1、Smart point方法,com_ptr_t
    2、用MFC OLE创建ADO应用MFC OLE类似于#import,能够对一个类型库产生一个封装(wrapper),但是不象#import,MFC OLE不能够从类型库中产生枚举类型,但是它能够更干净的实现ADO。MFC类CString和COleVariant隐藏了BSTRS和Variants的细节。需要注意的是,有MFC OLE产生的类封装都是继承了类ColeDispatchDriver,由ADO产生的失败的HRESULTS被封装在类ColeDispatchException中。  首先我们需要说明一下用MFC OLE ClassWizard创建ADO应用的几个不可缺少的步骤:  从Tools菜单中,选择Options,然后选择Directories tab,在Show Directories中,选择Library Files,然后在directories增加路径C:\program files\common files\system\ado,这样做的目的是设置包含ADO类型库的路径。  从View菜单中,选择ClassWizard,点击Add Class按纽并选择From A Type Library...,然后在Type Library dialog box对话框中,从C:\program files\common files\system\ado选择文件msado15.dll,在Confirm Classes对话框中,选择所有列出的类并按OK按纽,退出ClassWizard。实际上,ClassWizard为你生成了两个文件msado15.h和msado15.cpp.  下面的代码是实现ADO应用的代码:  AfxOleInit(); file://初始化COM对象  ...  _Recordset Rs1; file://定义数据集对象  COleException e; 
      COleVariant Connect( "DSN=AdoDemo;UID=sa;PWD=;" );  COleVariant Source ( "SELECT * FROM Authors" );  file://创建数据集对象  Rs1.CreateDispatch( "ADODB.Recordset.2.0", &e );  Rs1.Open( (VARIANT) Source, (VARIANT) Connect, 0, 1, -1 );  file://这里可以对结果集Rs1进行处理  Rs1.Close();  Rs1.ReleaseDispatch();  AfxMessageBox("Success!");  #import和MFC OLE都围绕着一个给定的自动化对象产生了一个封装类,它们分别继承自_com_ptr_t和ColeDispatchDriver。但是事实上,你可以通过使用Windows API函数直接初始化ADO对象,下面讨论直接用Win32 API函数来操作COM对象。3、用COM API创建ADO应用为了直接使用ADO和COM对象,需要添加两个头文件adoid.h和adoint.h,这两个头文件定义了CLSIDs,接口定义和你操作ADO类型库所需要的枚举类型。同时你也需要增加头文件INITGUID.H。  为了能够编译用COM API创建的ADO工程文件,你需要安装OLE DB SDK或者是MSDASDK工具。下面是简单的示例代码:  #include   #include   #include "adoid.h" // ADO的GUID's  #include "adoint.h" // ADO的类、枚举等等  void main()  {   HRESULT hr = S_OK;   ADORecordset* Rs1 = NULL; // ADORecordset 是在adoint.h中定义的   VARIANT Source;   VARIANT Connect;   VariantInit( &Source );   VariantInit( &Connect );   Source.vt = VT_BSTR;   Source.bstrVal = ::SysAllocString( L"SELECT * FROM Authors");   Connect.vt = VT_BSTR;   Connect.bstrVal = ::SysAllocString( L"DSN=AdoDemo;UID=sa;PWD=;" );   hr = CoCreateInstance( CLSID_CADORecordset,    NULL,    CLSCTX_INPROC_SERVER,    IID_IADORecordset,    (LPVOID *) &Rs1 );   if( SUCCEEDED( hr ) ) hr = Rs1->Open( Source,   Connect,   adOpenForwardOnly,    adLockReadOnly,    -1 );   file://这里你可以对记录集Rs1进行处理   if( SUCCEEDED( hr ) ) hr = Rs1->Close();   if( SUCCEEDED( hr ) ) { Rs1->Release(); Rs1 = NULL; }   if( SUCCEEDED( hr ) ) ::MessageBox( NULL, "Success!", "", MB_OK );  }