现在的位置: 首页 > 综合 > 正文

VC操作ACCESS数据库

2013年08月08日 ⁄ 综合 ⁄ 共 2249字 ⁄ 字号 评论关闭

转自:http://hi.baidu.com/baoss123/blog/item/c2133f2f5e0e395a4ec22661.html

首先在VC++中建立一个基于对话框的工程(在这里取名为sjtest)

1 StdAfx.h头文件中导入msado15.dll文件。(代码如下)

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

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

2 在主窗口类声明两个变量。(CsjtestDlg.h)

代码:

_ConnectionPtr m_pConnection;

       _RecordsetPtr m_pRecordset;

关于_ConnectionPtr _RecordsetPtr 两个智能指针具体作用网上很多,我不详述。想了解的请读者自己查询,本文旨在为大家建立起数据库连接并且显示出来!

3 在对话框中添加一个ListControl控件,并且将其属性中的Style设置如图

View设置成Report,Single selection,auto arrange no label wrap勾上!

4 CLASS WIZARD里面添加一个和LISTCONTROL想关联的变量m_Grid

5、在CSjtestApp应用程序类中的初始化函数InitInstance()中初始化COM环境

在上面添加:       ::CoInitialize(NULL);

并在return之前释放:添加代码如下:    ::CoUninitialize();

5 建立ADO连接数据库函数

在主窗口类(CSjktestDlg)库中添加函数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("连接数据失败,请检查数据库路径是否正确!");

       }

在这里我的数据名字为shujuku.mdb,当然CString strConnect="DRIVER={Microsoft Access Driver (*.mdb)};       uid=;pwd=;DBQ=shujuku.mdb;";也可以使用如下字符串连接

       CString strConnect="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=shujuku.mdb;Persist Security Info=False";代替

6 按照第五步那样建立关闭记录集和连接函数ExitConnect()并添加代码:

       //关闭记录集和连接

    if(m_pRecordset!=NULL)

              m_pRecordset->Close();

       m_pConnection->Close();

7 接着在初始化对话框中调用OnInitADOConn函数,已经获取数据库表中数据并显示在列表控件中。代码如下:

       m_Grid.SetExtendedStyle(LVS_EX_FLATSB

              |LVS_EX_FULLROWSELECT

              |LVS_EX_HEADERDRAGDROP

              |LVS_EX_ONECLICKACTIVATE

              |LVS_EX_GRIDLINES);

       m_Grid.InsertColumn(0,"员工编号",LVCFMT_LEFT,80,0);

       m_Grid.InsertColumn(1,"员工姓名",LVCFMT_LEFT,80,1);

       m_Grid.InsertColumn(2,"所属部门",LVCFMT_LEFT,80,2);

       m_Grid.InsertColumn(3,"基本工资",LVCFMT_LEFT,80,3);

       //连接数据库

       OnInitADOConn();

       //设置查询字符串

       _bstr_t bstrSQL = "select * from employees order by 员工编号 desc";

       //创建记录集指针对象实例

       m_pRecordset.CreateInstance(__uuidof(Recordset));//该句也可以使用

抱歉!评论已关闭.