使用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、程序运行结果如下:



版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

使用ADO进行数据库开发

  • 2000-12-14 00:00
  • 149B
  • 下载

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

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

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

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

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

一、约束 (一)通过设计器创建约束 索引/键 CHECK约束(检查约束) 默认约束 主外键关系 (二)通过SQL语句创建约束 --增加主键约束 alter table ...

ADO数据库开发技术

ADO的底层是OLE DB,所以不仅能访问关系型数据库,也能访问非关系型数据库,更是现在最快速的数据库访问中间层。 1.ADO主要对象介绍 ADO对象包括:Connection Object(连接...
  • tofro
  • tofro
  • 2011-12-31 21:58
  • 207
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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