用ADO编程有时候总觉得太过于繁琐,很多步骤应该得到封装。但是MFC没有封装它,网上有很多人都对ADO进行过封装,但是我介绍一个我觉得封装的还比较好的一个版本。这个版本的ADO封装类一共有CConnection,CRecordset,CCommand三个类。这三个类是别人封装的,我觉得封装的还是比较好的。可以到点击打开链接下载。
CConnection类
数据成员
_ConnectionPtr m_pConn | 连接智能指针的一个变量 |
CString m_sErrorMessage; | 用CConnection类的成员函数产生的错误的文本,可以用GetErrorMessage()成员函数去获取 |
上面的数据成员都是被定义成私有成员。而且下面的类的数据成员都是私有的。
成员函数
SetConnectionString | 设置连接的字符串,这个函数它有两种形式,字符串可以为CString和char *类型的 |
GetConnectionString | 得到连接的字符串 |
SetConnectionTimeout | 设置连接的产生错误前所等待的最长时间 |
GetCommandTimeout | 得到产生错误前所等待的最长时间 |
Open | 打开一个数据库连接,打开的方式都设置默认值,默认Open的四个可选参数都不传递参数。而是用SetConnectionString的方式,这样代码默认情况下很简洁 |
Close | 关闭一个数据库连接 |
Cancel | 取消Open或者Excute操作。调用这个函数必须Open方法的Options参数必须被设置为adSyncConnect,否则会发生run-time错误,即打开方式为同步打开,同步打开的意思是打开成功函数返回,否则一直等待直到超时。我们这个类Open被设置为默认方式打开,也就是同步方式打开。Execute方法的 Options参数必须被设置为adAsyncExecute或者 adAsyncFetch,否则会发生run-time错误,但是我们这个类中不使用connection的Excute函数执行SQL,还是一律选择用CCommand的Excute函数去执行SQL命令。 |
Release | 释放连接智能指针 |
GetCursorLocation | 得到这个CConnection连接的游标类型,这个类在初始化的时候将连接的游标类型设置为了adUseClient |
SetCursorLocation | 设置这个连接的游标类型 |
GetState | 得到这个CConnection的状态,是打开的,关闭的,正在执行SQL命令的,正在连接的状态 |
GetConnection | 得到这个连接的成员变量m_pConn。 |
RollbackTrans | 取消当前事务中所有做的任何更改并结束当前事务。 |
CommitTrans | 取消当前事务中所有做的任何更改并结束当前事务。它也可以开始一个新事务 |
BeginTrans | 开启一个事务 |
GetErrorMessage | 得到调用成员函数时发生的异常信息 |
CRecordset类
数据成员
m_sErrorMessage | 用CRecordset类的成员函数产生的错误的文本,可以用GetErrorMessage()成员函数去获取 |
m_pRst | 记录集智能指针的一个变量 |
成员函数
GetAbsolutePosition | 得到当前记录集游标当前在第几个序号位置 |
SetAbsolutePosition | 设置当前记录集游标到某一个序号位置 |
GetRecordCount | 得到记录集的数目 |
Open | 打开一个记录集,这个函数也给出了两个形式,也就是对连接对象的不同表示,请参见源码 |
Close | 关闭记录集智 |
Release | 释放记录集智能指针 |
MoveNext | 将记录集游标指向下一个记录,这个函数和下面几个记录集游标的移动函数没有加入在出错的情况下给出出错信息 |
MovePrevious | 将记录集游标指向先前的那一条记录 |
MoveLast | 将记录集游标指向最后一条记录 |
MoveFirst | 将记录集游标指向第一条记录 |
Move | 将记录集游标指向指定的那一条记录 |
rstEOF() | 判断当前游标是否指向最后一条记录,如果是还回TRUE,否则还回FALSE |
rstBOF() | 判断当前游标是否指向第一条记录,如果是还回TRUE,否则还回FALSE |
AddNew | 增加记录 |
Delete | 删除当前记录集中某一条记录 |
Cancel | 取消 |
Update | 将当前对记录的改动保存到数据源中 |
SetInt | 改变记录集的某一字段值,并且这个值是int型的。 |
GetInt | 得到某一字段的数据,它还回的数据将会是int类型的。 |
GetString | 得到某一字段的数据,它还回的数据将会是CString类型的。 |
SetString | 改变记录集的某一字段值,并且这个值是CString型的。 |
GetState | 得到记录集的状态 |
CCommand类
数据成员
m_sErrorMessage | 用CCommand类的成员函数产生的错误的文本,可以用GetErrorMessage()成员函数去获取 |
m_pCmd | 命令智能指针的一个变量 |
成员函数
SetActiveConnection | 设置你用的是哪个连接去执行这个命令 |
SetCommandText | 设置你要执行的SQL命令文本 |
SetCommandTimeout(long time) | 设置执行SQL命令的最长时间 |
ExecuteQuery | 执行的命令是查询的SQL语句,它会还回记录集 |
ExecuteUpdate | 执行的命令不会还回记录集,比如像插入,删除类型的SQL语句 |
Release | 释放命令智能指针 |
Cancel | 跟CConnetion的Cancel类似 |