MFC对话框以ADO的方式连接(ACESS)数据库

终于将数据库和MFC连接上了,费了好大劲,现在想起来是之前用的方法不对,其实也就几行代码。

1)首先我下载了Window office access2007   新建了数据库, 并将其另存为acess2007数据库,取名为shujuku.mdb,里面的表格名字为tiku.并将该文件放在所建立的对话框文件夹下。

2)在所建立的对话框中的StdAfx.h头文件中导入msado15.dll文件,即添加以下代码

                      #import "C:/Program Files/Common Files/System/ado/msado15.dll" no_namespace /

                     rename("EOF","adoEOF")rename("BOF","adoBOF")

            这段代码在刚放进去时会显示有错误,不要管他   你运行下对发现能够运行成功

3)在主对话框中添加两个变量

                        _ConnectionPtr m_pConnection;

                       _RecordsetPtr m_pRecordset;

            这两个变量的是用来连接和记录数据库的。

4)因为想把数据库中的内容显示在List列表中,所以需要添加list列表控件,并对其关联变量 m_list

5)在***,h中的InitInstance()中初始化COM环境的上面添加   ::CoInitialize(NULL);

                    在return之前释放:添加    ::CoUninitialize();

6)在***Dlg.cpp中建立ADO连接,需要在public:下添加成员函数     void OnInitADOConn();    void ExitConnect();

然后对这两个函数进行编写,

void AdoAccess::OnInitADOConn()
{

try

       {

              //创建连接对象实例

              m_pConnection.CreateInstance("ADODB.Connection");

              //设置连接字符串

              CString strConnect="DRIVER={Microsoft Access Driver (*.mdb)};/

                     uid=;pwd=;DBQ=shujuku.mdb;";

              //使用Open方法连接数据库

              m_pConnection->Open((_bstr_t)strConnect,"","",adModeUnknown);

       }

       catch(_com_error e)

       {

              AfxMessageBox("连接数据失败,请检查数据库路径是否正确!");

       }

}

void AdoAccess::ExitConnect()
{

  if(m_pRecordset!=NULL)

              m_pRecordset->Close();

       m_pConnection->Close();

}

7)接下来就是初始化对话框了  代码如下:

// TODO: 在此添加额外的初始化代码
m_Grid.SetExtendedStyle(LVS_EX_FLATSB
              |LVS_EX_FULLROWSELECT
              |LVS_EX_HEADERDRAGDROP
              |LVS_EX_ONECLICKACTIVATE
              |LVS_EX_GRIDLINES);
m_Grid.InsertColumn(0,"问题",LVCFMT_LEFT,160,0);
m_Grid.InsertColumn(1,"答案",LVCFMT_LEFT,110,1);
m_Grid.InsertColumn(2,"ID",LVCFMT_LEFT,110,2);
       //连接数据库
       OnInitADOConn();
       //设置查询字符串
  _bstr_t bstrSQL = "select * from tiku order by ID desc";//数据库中表的名称为tiku  这点很重要,当然可以更改为别的名字  只要与你的表名相一致就行
       //创建记录集指针对象实例
      m_pRecordset.CreateInstance(__uuidof(Recordset));
       //打开记录集
       m_pRecordset->Open(bstrSQL,m_pConnection.GetInterfacePtr(),adOpenDynamic,
              adLockOptimistic,adCmdText);
       while(!m_pRecordset->adoEOF)
       {
  m_Grid.InsertItem(0,"");
  m_Grid.SetItemText(0,2,(char*)(_bstr_t)m_pRecordset->GetCollect("ID"));
           m_Grid.SetItemText(0,1,(char*)(_bstr_t)m_pRecordset->GetCollect("答案"));
  m_Grid.SetItemText(0,0,(char*)(_bstr_t)m_pRecordset->GetCollect("问题"));
                 //将记录集指针移动到下一条记录
                  m_pRecordset->MoveNext();

  }
       //断开数据库连接
       ExitConnect();

return TRUE;  // 除非将焦点设置到控件,否则返回 TRUE


运行一下  就可以看到List 列表内容显示的是数据库中的信息,当然你可以在添加控件对列表中的内容进行删除 修改 添加等操作,这都比较简单了    



  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值