首頁 > 資料庫 > mysql教程 > ado操作access

ado操作access

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
發布: 2016-06-07 15:50:11
原創
1069 人瀏覽過

有一个1.mdb的数据库,有一个zy的表,如何用ado操作。 先封转一个类,如下: .h class CDataSource {public:void FreeData();void InitData();CDataSource();virtual ~CDataSource();_RecordsetPtr m_pRecordset;_ConnectionPtr m_pConn;}; .cpp CDataSource

有一个1.mdb的数据库,有一个zy的表,如何用ado操作。

先封转一个类,如下:

.h

1

2

3

4

5

6

7

8

9

10

class CDataSource 

{

public:

    void FreeData();

    void InitData();

    CDataSource();

    virtual ~CDataSource();

    _RecordsetPtr m_pRecordset;

    _ConnectionPtr m_pConn;

};

登入後複製

.cpp

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

CDataSource::CDataSource()

{

 

}

 

CDataSource::~CDataSource()

{

FreeData();

}

 

void CDataSource::InitData()

{

    ::CoInitialize(NULL);

      m_pConn.CreateInstance("ADODB.Connection");

    //初始化记录集对象

    m_pRecordset.CreateInstance("ADODB.Recordset");

      try

    {

           m_pConn->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:1.mdb", "", "", adModeUnknown);

     // m_pConn->ConnectionString="provider=SQLOLEDB.1;uid=sa;pwd=;Database=ff";

      // m_pConn->Open("", "", "", adModeUnknown);

      m_pRecordset->Open(  "select * from zy", _variant_t((IDispatch *) m_pConn, true),adOpenStatic, adLockReadOnly, adCmdText);

      }

    catch(_com_error &e)

    {

        ::AfxMessageBox(e.ErrorMessage());

    }

}

 

 

void CDataSource::FreeData()

{

    if (m_pConn)

    {

        m_pConn->Close();

        m_pRecordset.Release();

        m_pConn.Release();

        CoUninitialize();

    }

}

登入後複製


在主对话框里创建一个对象CDataSource m_ds;,在对话框起来的时候m_ds.InitData();

添加:

 m_ds.m_pConn->Execute((_bstr_t)“查询语句”,NULL,adCmdText);
   m_ds.m_pRecordset->Requery(adCmdUnknown);
删除:

 m_ds.m_pConn->Execute((_bstr_t)“删除语句”,NULL,adCmdText);
  m_ds.m_pRecordset->Requery(adCmdUnknown);

修改:

 m_ds.m_pConn->Execute((_bstr_t)“修改语句”,NULL,adCmdText);
 m_ds.m_pRecordset->Requery(adCmdUnknown);

遍历:

有个链表CListCtrl m_list;

 while (!m_ds.m_pRecordset->EndOfFile)
 {
 m_list.InsertItem(i,"sdf");
  m_list.SetItemText(i,0,(LPCTSTR)(_bstr_t)m_ds.m_pRecordset->GetCollect("id"));
    m_list.SetItemText(i,1,(LPCTSTR)(_bstr_t)m_ds.m_pRecordset->GetCollect("name"));
  m_list.SetItemText(i++,2,(LPCTSTR)(_bstr_t)m_ds.m_pRecordset->GetCollect("hobby"));
  m_ds.m_pRecordset->MoveNext();
 }
 m_ds.m_pRecordset->MoveFirst();

 

问题:

Win7上编译的ADO程序无法在低版本系统上运行,创建ADO时提示错误:0x80004002

如下语句:
hr1 = m_pConnection.CreateInstance(__uuidof(Connection));
解决办法:
下载msado60_Backcompat.tlb,地址见:http://download.csdn.net/detail/evsqiezi/8244221,相关代码导入修改为:
#import "msado60_Backcompat.tlb" no_namespace rename("EOF","EndOfFile")

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板