数据库开发四种连接方式

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1、连接数据库的四种方式

●ODBC(Open DataBase Connectivity)开放数据库连接

●提供了应用程序接口API。使得任何一个数据库都可以通过ODBC

驱动器与指定的DBMS相联。用户的程序可以通过调用ODBC驱动

管理器中相应的驱动程序达到管理数据库的目的。访问数据库时,

是由ODBC管理器将应用程序的数据库访问请示传递给相应的数据

库驱动程序,驱动程序再用SQL语句完成DBMS的访问任务。

●DAO(Data Access Objects )数据访问对象

●DAO使用Microsoft Jet提供的数据库访问对象集直接访问DBMS,

速度比ODBC要快。

●OLE DB OLE数据库

OLE DB 是一种高性能的、基于COM(组件对象模型)的数据库技术

●ActiveX Data Object(ADO)

2、MFC ODBC

●ODBC

开放数据库接口ODBC是一种标准的基于SQL的接口,提供了应用程序与数据库之间的接口,使得任何一个数据库都可以通过ODBC驱动器与指定的DBMS相联。使用ODBC能使用户编写数据库应用程序变得容易简单,避免了与数据库相连接的复杂性。

●ODBC的组成见图

ODBC管理器:位于控制面板

驱动程序管理器: ODBC32.dll

ODBC驱动程序:以DLL文件形式出现

●MFC ODBC

MFC类库中提供了两个有关ODBC对数据库操作的类:

CDatabase

CRecordset43

3、Delete子句

●Delete from 表名where 条件

4、Drop子句

●drop table 表名

删除表中的所有记录,但表结构保留

5、ADO对象模型

ADO对象模型提供了7种对象、4种集合。分别为:

●连接对象Connection

●命令对象Command

●参数对象Parameter

●记录集对象Recordset

●字段对象Field

●属性对象Property

●Errors集合

●Parameters集合

●Fields集合

●Properties集合

6、引入ADO库

#import "c:\program files\common files\system\ado\msado15.dll"

no_namespace

rename ("EOF", "adoEOF")

rename ("BOF", "adoBOF")

#include “stdafx.h”

7、初始化OLE/COM库环境

在能够使用ADO对象之前,必须为应用程序初始化COM环境。要完成这一任务,可以通过调用CoInitialize API函数,并传递NULL作为唯一的参数,代码如下:

:: CoInitialize(NULL);

如果应用程序中漏了这行代码,或是没有把它放在开始和对象交互之前,当运行应用程序时,将得到一个COM错误。

当完成所有的ADO活动时,还必须通过调用函数CoUnitialize关闭COM环境,代码如下:

::CoUnitialize();

这个函数可清除COM环境,并准备关闭应用程序。

8、创建ADO与数据源的连接

当初始化COM环境后,就可以创建与数据库的连接。建立数据库的连接需要使用连接对象Connection。首先定义一个_ConnectionPtr类型指针,然后调用CreateInstance方法实例化,代码如下:

_ConnectionPtr m_pConnection;

m_pConnection. CreateInstance(__uuidof(Connection));

之后,调用Connection对象的Open方法创建数据库的连接

try

{

_bstr_t strConnect=“Provider=OraOLEDB.Oracle.1;

Password=db1;UserID=db1;

Data Source=ORADB;Persist Security Info=True”;

m_pConnection->Open(strConnect,””,””, -1);//打开连接

}

catch(_com_error e) //处理异常

AfxMessageBox(e.ErrorMessage());

}

9、获得记录集

●RecordsetPtr m_pRecordset; //定义记录集指针

●m_pRecordset.CreateInstance(__uuidof(Recordset)); //实例化

●CString strSql=“select * from STUDENT”;

●BSTR bstrSQL=strSql.AllocSysString();

●m_pRecordset->Open(bstrSQL, (Idispatch*)m_pConnection, adOpenDynamic,

adLockOptimistic, adCmdText); //打开记录集

遍历记录集

●MoveFirst()

●MoveLast()

●MoveNext()

●MovePrevious()

10、添加记录

m_pRecordset->AddNew();

m_pRecordset->Fields->GetItem(“AGE”)->Value=(short)22;

m_pRecordset->Fields->GetItem(“NAME”)->Value=_bstr_t(“王晶晶”);

m_pRecordset->Update();

11、使用命令对象的Execute方法添加记录

●CommandPtr m_pCommand;

●try

●{ m_pCommand.CreateInstance("mand");

●_variant_t vNULL;

●vNULL.vt=VT_ERROR;

●vNULL.scode=DISP_E_PARAMNOTFOUND;

●m_pCommand->ActiveConnection=m_pConnection;

●m_pCommand->CommandText="insert into score(name,birthday,english)

VALUES('zhang','1990-10-20',100) ";

●m_pCommand->Execute(&vNULL,&vNULL,adCmdText);

●}

●catch(_com_error e) //处理异常

●{

●AfxMessageBox(e.ErrorMessage() );

●}

12、修改记录

●m_pRecordset->Fields->GetItem(“AGE”)->Value=(short)20 ;

●m_pRecordset->Fields->GetItem(“NAME”)->Value=_bstr_t(“孙楠”);

●m_pRecordset->Update();

13、使用命令对象的Execute方法删除记录

相关文档
最新文档