MFC之ADO数据库快速编程


源码Demo下载

ADO数据库操作综合起来就是增删改查,而且这几个流程都是固定的。

查询:连接数据库-->打开记录集-->遍历记录集并获取记录内容

插入:连接数据库-->打开记录集-->插入数据库记录-->将记录保存到数据库

更新:连接数据库-->打开记录集-->遍历记录集并更新记录-->将记录保存到数据库

删除:连接数据库-->执行删除的SQL语句


将表的一行数据内容封装成一个数据记录类,该数据记录类提供三个接口:

AdoGetPrimaryKey:一个获取数据记录类主键值接口,主要是为了数据记录做定位,然后做相应的操作

AdoGetRecord:一个获取当前记录集当前行内容的接口,查询遍历记录集的时候调用这个接口即可把记录集当前行内容存放数据记录类对象中

AdoSetRecord:一个将数据记录类对象更新到记录集当前行,插入的时候将数据记录类对象更新到记录集当前行即可,更新的时候通过调用AdoGetPrimaryKey接口获取对应的数据记录类对象,将数据记录类对象更新到记录集当前行


需要做到快速,还需要一个小工具ADO助手来帮忙根据SQL内容生成数据记录类,具体操作及使用请参考《如何使用ADO助手生成数据库代码》。

具体的使用步骤:

1.将本例中的数据库封装类拷贝到你MFC工程目录下,并用include包含到预处理头文件stdafx.h中

#include "Ado/Ado.h"

2.将用小工具生成的数据库类也添加到工程,本例中生成的数据库类是CDBDemo

-- SQL SERVER 2005建表SQL语句
CREATE TABLE [dbo].[tbl_Demo](
	[ID] [int] IDENTITY(1,1) NOT NULL,
	[Guid] [nvarchar](80) NOT NULL,
	[Name] [nvarchar](20) NULL,
	[Age] [int] NULL,
	[Photo] [image] NULL,
 CONSTRAINT [PK_tbl_Demo] PRIMARY KEY CLUSTERED 
(
	[Guid] ASC
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]

用ADO助手生成的MFC数据库代码如下,支持二进制字段。

生成的数据库类还需要增加一个成员函数CString AdoGetPrimaryKey() const,该函数返回表主键值,最终数据记录类如下:

/*----------------------------------------------------------------------------------------------------------------
Version:	AdoAssist 1.20
   Time:	2012-08-16 09:37:11
    SQL:	SELECT * FROM tbl_Demo
----------------------------------------------------------------------------------------------------------------*/
#pragma once

class CDBDemo
{
public:
	long			m_lID;	//0	ID	adInteger
	CString			m_strGuid;	//1	Guid	adVarWChar
	CString			m_strName;	//2	Name	adVarWChar
	long			m_lAge;	//3	Age	adInteger
	//CAdoByteArray			m_brPhoto;	//4	Photo	adLongVarBinary
	CAdoBinaryRes			m_brPhoto;	//4	Photo	adLongVarBinary

public:
	long GetID() const
	{
		return this->m_lID;
	}

	void GetID(long& tID) const
	{
		tID = this->m_lID;
	}

	void SetID(const long& tID)
	{
		this->m_lID = tID;
	}

	CString GetGuid() const
	{
		return this->m_strGuid;
	}

	void GetGuid(CString& tGuid) const
	{
		tGuid = this->m_strGuid;
	}

	void SetGuid(const CString& tGuid)
	{
		this->m_strGuid = tGuid;
	}

	CString GetName() const
	{
		return this-&g
  • 1
    点赞
  • 48
    收藏
    觉得还不错? 一键收藏
  • 24
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 24
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值