• 如何使用MFC连接Access数据库


    (1新建一个Access数据库文件。将其命名为data.mdb,并创建好表、字段。

    (2为系统添加数据源。打开“控制面板”—>“管理工具”—>“数据源”,选择“系统DSN”,点击右边的“添加”按钮,选择“Microsoft Access Driver(*.mdb)”,点击“完成”,给数据源起个名字,如conn,然后点击下面的“选择”,选择刚才建立好的data.mdb,点击“确定”,就完成了数据源的添加工作。

    注:如果是64位的操作系统,在点击“添加”按钮时可能没有Microsoft Access Driver(*.mdb)选项,这时你可以打开C:WindowsSysWOW64odbcad32.exe,这里面就有了。

    (3引入ado动态库文件。此时准备工作就已经做好了,接下来就是在MFC对话框工程(本文中工程名以Test为例)中进行数据库连接了。在stdafx.h头文件中添加对ado的支持,引入ado动态库文件,添加以下代码即可:

    #import "C:ProgramFilesCommon FilesSystemadomsado15.dll" no_namespace rename("EOF","adoEOF")
     
    (4初始化COM环境。我们可以使用AfxOleInit()来初始化COM库,这项工作通常在CWinApp::InitInstance()的重载函数中完成,请看如下代码:
    BOOL CTestApp::InitInstance() 
     
    { 
     
        AfxOleInit();
     
        ...... 
     
    } 

    注:还有另外一种初始化COM环境的方法,  

    BOOL CTestApp::InitInstance() 
     
    { 
     
        ::CoInitialize(NULL);//在app类中的InitInstance函数中添加
     
        ......

      ::CoUninitialize();
    //在app类中的InitInstance函数的最后(return之前)添加,释放COM环境 }

    5在对话框头文件CTestDlg.h的类中声明两个成员变量。

        _ConnectionPtr  m_pConnection;
    
        _RecordsetPtr   m_pRecordset;

    (6接下来就是在对话框初始化的时候连接数据库了。在CTestDlg::OnInitDialog()中添加以下代码:

      

    BOOL CTestDlg::OnInitDialog()
     
    {
     
        // TODO:在此添加额外的初始化代码                 
     
        try
     
        {
     
            HRESULT hr =m_pConnection.CreateInstance("ADODB.Connection");//创建Connection对象
     
            if(SUCCEEDED(hr))
     
            {
     
                hr =m_pConnection->Open("Provider = Microsoft.Jet.OLEDB.4.0; Data Source =e:\data.mdb","","",adModeUnknown);//连接数据库
     
                //hr =m_pConnection->Open("DRIVER={Microsoft Access Driver(*.mdb)};DBQ=e:\data.mdb;","","",adModeUnknown);//连接数据库
     
              //上面一句中连接字符串中的Provider是针对ACCESS2000环境的,对于ACCESS97,需要改为:Provider=Microsoft.Jet.OLEDB.3.51;
     
            }
     
        }
     
        catch(_com_error e)//捕捉异常
     
        {
     
            CString errormessage;
     
            errormessage.Format("连接数据库失败!
    错误信息:%s",e.ErrorMessage());
     
            AfxMessageBox(errormessage);//显示错误信息
     
        }
     
    }

    (7以上准备工作做好了,就可以在程序中使用m_pConnectionm_pRecordset了。调用示例如下

     

    void CTestDlg::OnBnClickedButton1()
     
    {
     
             //TODO: 在此添加控件通知处理程序代码
     
             m_pRecordset.CreateInstance("ADODB.Recordset");
     
             m_pRecordset->Open("SELECT* FROM news WHERE id = 174",m_pConnection.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText);
     
             
             _variant_t value = m_pRecordset->GetCollect("content");
     
             SetDlgItemText(IDC_EDIT1,(LPCTSTR)_bstr_t(value));
     
    }
    以上是我在news表中找出id=174的新闻,并在EDIT中显示其"content"

    注:可将以上步骤简单地总结一下: 

      第一步:引入ado动态库文件。第二步:初始化COM环境。第三步:创建数据库连接Connection及记录集Recordset。

      通过以上步骤,就能让你的客户端和数据库交互了,可以对数据库进行增改删查等。

  • 相关阅读:
    消失之物【背包回退】
    数据库连接JDBC
    Spring事物管理机制简单学习
    java生成验证码并可刷新
    spring加载属性配置文件内容
    java读写属性配置文件
    抓取页面图片元素并保存到本机电脑
    java模拟页面表单登录
    通过java进行电脑屏幕截图
    通过JBOSS服务器来实现JMS消息传送
  • 原文地址:https://www.cnblogs.com/mzhrd/p/3529637.html
Copyright © 2020-2023  润新知