1.库文件介绍
在(一)中给出了ADO操作数据库时需要导入的动态库以及代码形式,入下所示:
#import "C:\Program Files\Common Files\System\ADO\msado15.dll" no_namespace rename("BOF", "adoBOF") rename("EOF", "adoEOF")
不同于我们常用的包含头文件,静态编译链接导出库的形式,ADO类中的定义是作为一种资源存储在msado15.dll中,是COM中的类型库。当我们需要使用时,利用#import指令,使得VS从msado15.dll中读取这个类型库,创建一组C++头文件,这些头文件的类型是.tli和.tlh。
由于EOF这样的命名,容易发生冲突,比如文件指针的结尾为eof,所以为了规避ADO对象之间的命令冲突,通过rename来自定义自己的EOF。
2.智能指针
1._ConnectionPtr
_ConnectionPtr一般被用来创建一个数据连接以及执行一条不需要返回值的数据库语句。
2._CommandPtr
_ComanndPtr也可以用来打开一个数据连接,但是一般来说,这样的做法并不多见,大多数情况下都是利用_ConnectionPtr来创建一个连接,之后利用activation讲_CommandPtr与_CommandPtr绑定在一起。如果直接利用_CommandPtr直接打开数据连接,也不无可,只是这样做仍然创建了一个_ConnectionPtr对象,只是这样方式是隐式创建的。而且隐式创建的方法会导致如果多次利用_CommandPtr打开数据库连接时,隐式的_ConnectionPtr连接会不断的连接,断开数据源,从而使性能下降。
_CommandPtr 执行数据库语句后会返回一个_RecordsetPtr类型的记录集。通过该记录集可以实现对数据库数据的操作。存储过程的输入和输出参数只能通过_CommandPtr来使用。
3._RecordsetPtr
_RecordsetPtr是一个记录集,就如之前所说,它存储着我们操作数据库的结果。我们可以通过它对每条记录,每个字段的数据进行读取,修改,插入等操作。
_RecordsetPtr 也有执行SQL语句的功能。