您的位置:首页 > 数据库

ADO 数据库开发技术一些小知识

2014-07-03 16:59 155 查看
一、ADO模型常用三个对象

连接对象Connection

通过连接可以从应用程序中访问数据源。连接时必须指定要连接的数据源以及连接所

使用的用户名和用户口令。

命令对象Command

可以通过已建立的连接发出命令,从而对数据源进行指定操作。一般情况下,命令可

以在数据源中添加、修改或删除数据,也可以检索数据。

记录集对象Recordset

查询命令可以将查询结果储存在本地,这些数据以行为单位,返回数据的集合被称为

记录集

ADO 模型中常用的对象为Connection 对象、Command 对象、Recordset 对象。在使用

这 3 个对象的时候,需要定义与之对应的 3 个智能指针,分别为_ConnectionPtr 、

_CommandPtr 和_RecordsetPtr。然后调用它们的CreateInstance 方法实例化,从而创建这3

个对象的实例。

二、_bstr_t 和 _variant_t 类

在利用ADO 进行数据库开发的时候,_bstr_t 和_variant_t 类很有用,省去了许多BSTR

和VARIANT 类型转换的麻烦。

COM 编程不使用CString 类,因为COM 必须设计成跨平台,它需要一种更普遍的方

法来处理字符串和其他数据类型,这也是 VARIANT 变量数据类型的来历。

BSTR 类型也是如此,用来处理COM 中的字符串。

VARIANT 是一个巨大的union 联合体,几乎包含了所有的数据类型,简单来说,_variant_t 是一个类,封装了VARIANT 的数据类型,并允许

进行强制类型转换。同样,_bstr_t 是对BSTR 进行了封装的类

有了这两个类,开发ADO程序将得到很大的方便。在后面的例子中,将介绍它们的使用方法。

三、

1。当初始化 COM 环境后,就可以创建与数据库的连接。建立数据库的连接需要使用连接对象Connection。

2。利用 ADO 查询数据库的记录,需要使用记录集对象 Recordset。首先定义一个_RecordsetPtr 类型的指针

3。利用Open 方法打开记录集之后,就可以遍历打开的记录集和获取记录集中的字段值。

遍历记录的时候,利用adoEOF( )函数判断记录集是否到达末尾,如果没有,可以继续访问

记录集,否则退出While 循环。

4。ADO 技术提供了三种添加记录的方法,一是使用连接对象的Execute 方法,二是使用

命令对象的Execute 方法,三是使用记录集对象的AddNew 方法。

5。与添加记录一样,既可以使用连接对象的Execute 方法,也可以使用命令对象的Execute

方法,还可以使用记录集对象进行操作来修改记录,下面重点介绍使用记录集对象修改记

录的方法和步骤。

首先打开记录集,然后修改记录集中的相应的字段值,最后调用Update 方法,将修改

后的数据更新到数据库中。

6。与数据库建立连接成功后,需要对数据库进行操作,比如,添加记录、更新记录、删除记录、查询记录,

可以用连接对象Connection 的指针进行操作~但是更方便的是用记录集RecordSet的指针m_pRecordSet,推荐用m_pRecordSet对数据库进行操作~~

(因为记录集对象本身就是用来和数据表中的各条记录打交道的,所以用记录集操作数据表更方便)

四、常用ADO编程函数

1.创建三个常用对象的函数CreateInstance,eg:

m_pConnection.CreateInstance(__uuidof(Connection))

m_pRecordset.CreateInstance(__uuidof(Recordset))

2.连接对象中与数据库建立连接的Open函数,

hr = m_pConnection->Open("Provider=SQLOLEDB.1;\

Integrated Security=SSPI;\

Initial Catalog=test1;\

Persist Security Info=False;\

Data Source=(local)","","",adModeUnknown);

3.打开数据库(读取记录)的Open函数,

m_pRecordSet->Open("SELECT * FROM mytable", m_pConnection.GetInterfacePtr(), adOpenDynamic, adLockOptimistic, adCmdUnknown);

4.打开数据记录(执行SQL语句,同上面的3)的Execute函数,

_bstr_t strCmd="SELECT * FROM [user]";

m_pRecordset=m_pConnection->Execute(strCmd,&RecordsAffected,adCmdText)

5.利用m_pRecordset,可以对数据库进行很多操作~~

(1)if(!m_pRecordset->BOF)

m_pRecordset->MoveFirst(); // 判断数据表是否为空~~

(2)m_pRecordset->MoveFirst()可以将指针移动到第一条记录

(3)m_pRecordset->MoveNext()可以将指针往下移动一项

(4)m_pRecordset->MovePrevious()可以将指针往前移动一项

(5)while (!m_pRecordset->adoEOF) 可以一直读取记录,直到最后一条记录

(6)m_pRecordset->GetCollect("name") 获取某一条记录中,属性为"name"这一列的数据(即,某个人的姓名)

(7)m_pRecordset->AddNew()该函数是让数据表添加一新行,只有添加完新行支行,再调用Putcollect()才能把数据写入

(8)m_pRecordset->PutCollect("name",_bstr_t(m_name)) 和第(6)条刚好相反,这里是从编辑框中获取数据,然后写入到数据表某一列中

(9)m_pRecordset->Update() 写入数据之后,要更新一下

(10)m_pRecordset->MoveLast() 移动到数据表中最后一条记录

(11)m_pRecordset->Close() 关闭记录集

(12)m_pRecordset->Move(cursel) 将记录集移动到光标所指的位置

五、增删改查常用函数

1.查询的时候用到 GetCollect 函数,

2.增加记录的时候 用 AddNew() PutCollect() Update()

m_pRecordset->AddNew(); //用这种方法添加数据就必须用open 语句执行SQL语句

m_pRecordset->PutCollect("name", _variant_t(m_Name));

m_pRecordset->PutCollect("age", atol(m_Age));

m_pRecordset->Update();

m_pRecordset->Close();

3.修改记录的时候用Move() putCollect() Update()

m_pRecordset->Move(cursel);

m_pRecordset->PutCollect("name", _variant_t(m_Name));

m_pRecordset->PutCollect("age", atol(m_Age));

m_pRecordset->Update();

4.删除记录的时候用Move() Delete() Update()

m_pRecordset->MoveFirst();

m_pRecordset->Move(cursel);

m_pRecordset->Delete(adAffectCurrent); //参数adAffectCurrent为删除当前记录

m_pRecordset->Update();

m_pRecordset->Close();

六、几个函数用法的区别

m_pRecordset->Open("操作字符串"……) 这个可以打开可编辑的记录集,即,增删改查都可以用。

m_pConnection->Execute("操作字符串"……) 是只读的记录集,即只能执行查询操作~~函数的返回值就是只读的_RecordsetPtr

m_pConnection->Open("操作字符串"……) 这个打开数据库连接,所有的数据库操作都是建立在数据库连接上的
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: