数据库开发四种连接方式
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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方法删除记录