Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1661189
  • 博文数量: 585
  • 博客积分: 14610
  • 博客等级: 上将
  • 技术积分: 7402
  • 用 户 组: 普通用户
  • 注册时间: 2008-05-15 10:52
文章存档

2013年(5)

2012年(214)

2011年(56)

2010年(66)

2009年(44)

2008年(200)

分类: C/C++

2012-01-27 02:47:23

VC++下封装ADO类以及使用方法
分类: 2.1 VC++/MFC 738人阅读 评论(0) 收藏 举报

操作系统:windows 7
软件环境:visual studio 2008 、Microsoft SQL 2005
本次目的:介绍一个已经封装的ADO类,简单说明怎么导入使用

      首先声明一下,这个封装的ADO类是在【 】下载的,因为最近在数据库课程设计,所以对vc++下使用ADO连接数据库不是很了解,故若是本文有错误的地方的,请不吝指出。具体的ADO类各个封装功能请进入【原文地址 】查看。在此仅介绍使用此ADO封装类的入门,如连接数据库,显示记录等。一个测试例子如下:

使用步骤:
1.先从【 】下载封装的ADO类,可以用记事本之类的打开里面的文件,对于每个功能已经注释的蛮详细的;
2.准备数据库,可以是SQL 2000 或更高的,在这里我是用SQL 2005,新建一个vc_sqlexample数据库一个student表,格式如下:
 
3.具体的表内容可以随便写,然后新建MFC基于对话框工程(名称为测试1),右键工程名,添加封装的ADO类到工程里面;
4.初始化 COM 环境,添加以下代码:

  1. /* 测试1.h */  
  2. class C测试1App : public CWinApp  
  3. {  
  4.     public:  
  5.     virtual int ExitInstance();  
  6. }  
  7. /* 测试1.cpp */  
  8. BOOL C测试1App::InitInstance()  
  9. {  
  10.     CoInitialize(NULL);  
  11. }  
  12. int C测试App::ExitInstance()   
  13. {  
  14.     CoUninitialize();  
  15.     return CWinApp::ExitInstance();  
  16. }  

5.在对话框(工程基于对话框)头文件添加"ado.h",在类的声明里添加对象。并且在实现文件里面的OnInitDialog函数连接数据库。
  1. #include "ado.h"  
  2. class C测试1Dlg : public CDialog  
  3. {  
  4. protected:    
  5.     CAdoConnection m_adoConnection;  
  6.     CAdoRecordSet  m_adoRecordSet;  
  7. }  
  8.  /* 测试1Dlg.cpp : 实现文件 */  
  9. BOOL C测试1Dlg::OnInitDialog()  
  10. {  
  11.     if (m_adoConnection.ConnectSQLServer("127.0.0.1","vc_sqlexample","sa","wjs1314"))  
  12.     {     
  13.         m_adoRecordSet.SetAdoConnection(&m_adoConnection);  
  14.         m_adoRecordSet.SetCursorLocation();  
  15.         m_adoRecordSet.Open("student", adCmdTable);  
  16.         m_adoConnection.BeginTrans();  
  17.         UpdateRecord(TRUE);           
  18.     }  
  19.     else  
  20.     {  
  21.         MessageBox("数据库连接失败!");  
  22.     }  
  23. }  

6.为控件添加变量(右键控件添加变量),和一个显示数据的函数,还有上一条记录、下一条记录的按钮功能
  1. class C测试1Dlg : public CDialog  
  2. {  
  3. public:  
  4.     COleDateTime m_strBirth;  
  5.     CString m_strBrief;  
  6.     CString m_strStuId;  
  7.     CString m_strName;  
  8.     CString m_str***;  
  9.       
  10.     BOOL UpdateRecord(BOOL bLoad = TRUE);  
  11. }  
  12. BOOL C测试1Dlg::UpdateRecord(BOOL bLoad)  
  13. {  
  14.     if (m_adoRecordSet.GetRecordCount() < 1) return FALSE;  
  15.     if (bLoad)  
  16.     {         
  17.         if (!m_adoRecordSet.GetCollect("stuId", m_strStuId)  
  18.          || !m_adoRecordSet.GetCollect("stuName", m_strName)  
  19.          || !m_adoRecordSet.GetCollect("stu***", m_str***)  
  20.          || !m_adoRecordSet.GetCollect("birth", m_strBirth)  
  21.          || !m_adoRecordSet.GetCollect("brief", m_strBrief) )  
  22.         {}        
  23.         UpdateData(FALSE);  
  24.         return TRUE;  
  25.     }  
  26. }  
  27. void C测试1Dlg::OnBnClickedButton1()  
  28. {  
  29.     // TODO: 在此添加控件通知处理程序代码  
  30.     UpdateData();  
  31.     if (m_adoRecordSet.MovePrevious())  
  32.         UpdateRecord();  
  33. }  
  34. void C测试1Dlg::OnBnClickedButton2()  
  35. {  
  36.     // TODO: 在此添加控件通知处理程序代码  
  37.     UpdateData();  
  38.     if (m_adoRecordSet.MoveNext())  
  39.         UpdateRecord();  
  40. }  

7.启动数据库,运行编译程序。

阅读(875) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~