.arr); ____strcpy((char *)password.arr,"TIGER"); ____pass
word.len = strlen((char *)password.arr); ____strcpy((char *)dbname.arr,"SUNDB"); ____dbname.len = strlen((char *)dbname.arr); ____EXEC SQL WHENEVER SQLERROR STOP;
____//隐式异常处理 ____EXEC SQL CONNECT :usernameIDENTIFIED BY :password USING :dbname; ____/*if (sqlca.
sqlcode != 0) //显式异常处理 ____{ ____AfxMessageBox("n 与 Oracle 数据库连接失 败!"); ____return; ____}*/ ____}
在 VC 中使用 PRO*C 时,先用 PRO*C 编写所需的操作数据库的子程序,再 运行 PRO*C 预编译程序把 PRO*C 源程序转成相应的.CPP 源程序,将该程序插 入到用户工程文件中,并在需要对插入函数进行调用的模块中说明函数,然后就 可以在此模块中调用所需的函数。 使用 ODBC 中间件访问数据库 1.ODBC
工作原理 ODBC 是 Open Database Connect(开放数据库互连)的简称,它是由 Microsoft 公司于 1 991 年提出的一个用于访问数据库的统一界面标准,是应用 程序和数据库系统之间的中间件。 它通过使用相应应用平台上和所需数据库对应 的驱动程序与应用程序的交互来实现对数据库的操作,避免了在应用程序中直接 调用与数据库相关的操作,从而提供了数据库的独立性。 ODBC 主要由驱动
程序和驱动程序管理器组成。驱动程序是一个用以支持 ODBC 函数调用的模块(在 WIN95 下通常是一个 DLL),每个驱动程序对应于相
应的数据库,当应用程序从基于一个数据库
系统移植到另一个时,只需更改应用 程序中由 ODBC 管理程序设定的与相应数据库系统对应的别名即可。驱动程序 管理器(包含在 ODBC32.DLL 中)可链接到所有 ODBC 应用程序中,它负责管理 应用程序中 ODBC 函数与 DLL 中函数的绑定。 ODBC 使用层次的方法来管理
数据库,在数据库通信结构的每一层,对可能 出现依赖数据库产品自身特性的地方,ODBC 都引入一个公共接口以解决潜在的 不一致性,从而很好地解决了基于数据库系统应用程序的相对独立性,这也是 ODBC 一经推出就获得巨大成功的重要原因之一。 从结构上分,ODBC 分为单束式和多束式两类。 单束式驱动程序 单束式驱动程序介于应用程序和数据库之间,像中介驱动程序一样数据提供 一个统一的数据访问方式。 当用户进行数据库操作时,应用程序传递一个 ODBC 函数调用给 ODBC 驱 动程序管理器, 由 ODBC API 判断该调用是由它直接处理还是送交驱动程序执 行。 可见,单束式驱动程序本身是一个数据库引擎,由它直接可完成对数据库的 操作,尽管该数据库可能位于网络的任何地方。 多束式驱动程序 多束式驱动程序负责在数据库引擎和客户应用程序之间传送命令和数据,它 本身并不执行数据处理操作,而用于远程操作的网络通信协议的一个界面。 前端应用程序提出对数据库处理的请求,该请求转给 ODBC 驱动程序管理器, 驱动程序管理器依据请求的情况,就地完成或传给多束驱动程序。多束式驱动程 序将请求翻译为特定厂家的数据库通信接口(如 Oracle 的 SQLNet)所能理解的 形式并交于接口去处理,接口把请求经网络传送给服务器上的数据引擎。服务器 处理完后把结果发回给数据库
通信接口 ,数据库接口将结果传给多束式 ODBC 驱动程序,再由驱动程序将结果传给应用程序。
2.在 VC 中使用 ODBC 在 Visual C++中提供了 CDatabase、CRecordset、CRecordView、 CDBException 和 CFie ldExchange 五个类,这些类封装了 ODBC SDK 函数, 从而使用户可以无需了解 SDK 函数就可以很方便地操作支持 ODBC 的数据库。 CDatabase 类封装了与数据库建立连接、控制事务的提交和回滚及执行 SQL 语句的方法。 CRecordset 类封装了大部分操纵数据库的方法,包括浏览、修改记录、控 制游标移动、排序等操作。 CRecordView 类提供了与 Recordset 对象相连接的视图,可以建立视中的 控件与数据库数据的