ADO数据库操作综合起来就是增删改查,而且这几个流程都是固定的。
查询:连接数据库-->打开记录集-->遍历记录集并获取记录内容
插入:连接数据库-->打开记录集-->插入数据库记录-->将记录保存到数据库
更新:连接数据库-->打开记录集-->遍历记录集并更新记录-->将记录保存到数据库
删除:连接数据库-->执行删除的SQL语句
将表的一行数据内容封装成一个数据记录类,该数据记录类提供三个接口:
AdoGetPrimaryKey:一个获取数据记录类主键值接口,主要是为了数据记录做定位,然后做相应的操作
AdoGetRecord:一个获取当前记录集当前行内容的接口,查询遍历记录集的时候调用这个接口即可把记录集当前行内容存放数据记录类对象中
AdoSetRecord:一个将数据记录类对象更新到记录集当前行,插入的时候将数据记录类对象更新到记录集当前行即可,更新的时候通过调用AdoGetPrimaryKey接口获取对应的数据记录类对象,将数据记录类对象更新到记录集当前行
具体的使用步骤:
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