使用ADO对象进行数据库开发实例

原创 2012年03月22日 17:12:28

1、 创建一个MFC对话框工程AdoObject,并设计如下对话框界面。

2、关联变量:

3、在stdafx.h引入ADO库定义文件,包含头文件。

#prgama warning (disable : 4146)
#include "icrsint.h"
#import "C:\Program Files\Common Files\System\ado\msado15.dll" \
	 no_namespace rename("EOF","EndOfFile") rename("BOF","FirstOfFile")

4、在AdoObject.cpp中,初始化COM

BOOL AdoObjectApp::InitInstance()
{
	::CoInitialize(NULL);
    /*if(!AfxOleInit())
	{
		AfxMessageBox("COM Error!");
		return FALSE;
	}*/
	AfxEnableControlContainer();
	//......
}

5、为对话框类添加成员:

_ConnectionPtr  m_pConnection;		//数据库连接指针(对象)
	_RecordsetPtr   m_pRecordSet;		//记录集指针(对象)
	_variant_t      vFieldValue;		//字段对应的记录值
	CString        strFieldValue;		//字段对应的记录值
	void 		  DisplayFields();		//显示记录到绑定的对话框控件上

6、在对话框类的OnInitDialog中添加如下代码,实现数据库连接:

// 数据库连接
	m_pConnection.CreateInstance(_uuidof(Connection));
	m_pConnection->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source = student.mdb;","","",-1);
	
	// 打开数据库记录
	m_pRecordSet.CreateInstance(_uuidof(Recordset));
	m_pRecordSet->Open("select * from stu_info",m_pConnection.GetInterfacePtr(), 
			adOpenDynamic, adLockOptimistic, adCmdText);

	// 移动游标到打开的第一条数据库记录
	m_pRecordSet->MoveFirst(); 
	DisplayFields();	//显示表中的记录信息

7、添加对话框成员函数DisplayFields:负责显示对应表中的记录信息。

void CAdoObjectDlg::DisplayFields()
{
	vFieldValue= m_pRecordSet->GetCollect("学号");
	strFieldValue = (char*)_bstr_t(vFieldValue);
	m_sNo = strFieldValue;
	vFieldValue.Clear();

	vFieldValue= m_pRecordSet->GetCollect("姓名");
	strFieldValue=(char*)_bstr_t(vFieldValue);
	m_sName = strFieldValue;
	vFieldValue.Clear();

	vFieldValue= m_pRecordSet->GetCollect("出生日期");
	strFieldValue=(char*)_bstr_t(vFieldValue);
	m_sBirthday = strFieldValue;
	vFieldValue.Clear();

	vFieldValue= m_pRecordSet->GetCollect("地址");
	strFieldValue=(char*)_bstr_t(vFieldValue);
	m_sAddress = strFieldValue;
	vFieldValue.Clear();

	vFieldValue= m_pRecordSet->GetCollect("四级成绩");
	strFieldValue=(char*)_bstr_t(vFieldValue);
	m_sEnglish = strFieldValue;
	vFieldValue.Clear();

	vFieldValue= m_pRecordSet->GetCollect("VC成绩");
	strFieldValue=(char*)_bstr_t(vFieldValue);
	m_sVC = strFieldValue;
	vFieldValue.Clear();

	UpdateData(FALSE);
}

8、按钮响应函数

void CAdoTestDlg::OnButton1() // 向后
{
	// TODO: Add your control notification handler code here
	m_pRecordSet->MoveNext();
	if(m_pRecordSet->EndOfFile==VARIANT_FALSE)
		DisplayFields();
	else
	{
		m_pRecordSet->MovePrevious();
		AfxMessageBox("已经到最后一条记录!");
	}
}
void CAdoTestDlg::OnButton2() // 向前
{
	m_pRecordSet->MovePrevious();
	if(m_pRecordSet->FirstOfFile==VARIANT_FALSE)
		DisplayFields();
	else
	{
		m_pRecordSet->MoveNext();
		AfxMessageBox("已经到第一条记录!");
	}	
}

void CAdoTestDlg::OnButton3() //添加
{
	// TODO: Add your control notification handler code here
	UpdateData(TRUE);
	m_pRecordSet->AddNew();
	m_pRecordSet->PutCollect("学号",_variant_t(m_Sno));
	m_pRecordSet->PutCollect("姓名",_variant_t(m_Name));
	m_pRecordSet->PutCollect("出生日期",_variant_t(m_birthday));
	m_pRecordSet->PutCollect("四级成绩",_variant_t(m_EnglishGrade));
	m_pRecordSet->PutCollect("VC成绩",_variant_t(m_ComputerGrade));
	m_pRecordSet->Update();	//存入数据库

	m_sNo = " ";
	m_sName= " ";
	m_sBirthday = " ";
	m_sEnglish = " ";
	m_sVC = " ";
	UpdateData(FALSE);
}
void CAdoTestDlg::OnButton4() 
{
	// TODO: Add your control notification handler code here.;
	m_pRecordSet->Delete(adAffectCurrent);
	m_Sno = " ";
	m_Name= " ";
	m_birthday = " ";
	m_EnglishGrade = " ";
	m_ComputerGrade = " ";
	UpdateData(FALSE);
}

9、程序运行结果如下:



MFC ADO数据库操作

内容比较乱,作为草稿,对现有的ado数据库操作函数方法进行汇总。 小函数 m_pRecordset->RecordCount//取得记录数量 全局变量 #import "msado15.dll...

自学总结:MFC之ADO数据库编程----仿SQL SERVER操作项目

前段时间开始学习了ADO数据库编程,后来做了一个小项目,是用MFC制作了一个仿SQL SERVER操作的。项目完成了数据库连接、关闭,表的打开关闭,SQL语句的执行,数据实时的修改,增删记录。 关于A...
  • zo2k123
  • zo2k123
  • 2015年09月02日 10:48
  • 645

使用ADO进行数据库开发

  • 2000年12月14日 00:00
  • 149B
  • 下载

黑马程序员_学习日记47_615数据库开发及ADO.Net(连接字符串、SqlDataReader对象、连接池)

重难点:reader.NextResult()、反射揭示连接池原理、连接字符串写法   一、日期函数: 1、getdate() 获得当前日期 2、Dateadd(datepart,numbe...

c#利用ado.net进行数据库开发

  • 2015年11月18日 10:25
  • 4KB
  • 下载

VC使用mysql.h的接口头文件进行连接mysql数据库开发的完整解决方案

VC++6.0连接MySQL的配置过程 VC使用mysql.h的接口头文件进行连接mysql数据库开发   摘要:前几天搞一个VC程序,目的是连接MYSQL服务器,做查询数据,等各种操作。我没有...

ADO 数据库开发技术一些小知识

连接对象Connection  通过连接可以从应用程序中访问数据源。连接时必须指定要连接的数据源以及连接所 使用的用户名和用户口令。  命令对象Command  可以通过已建立的连接发...

黑马程序员_学习日记46_614数据库开发及ADO.Net(约束、数据检索)

一、约束 (一)通过设计器创建约束 索引/键 CHECK约束(检查约束) 默认约束 主外键关系 (二)通过SQL语句创建约束 --增加主键约束 alter table ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:使用ADO对象进行数据库开发实例
举报原因:
原因补充:

(最多只允许输入30个字)