赛捷软件论坛's Archiver

vicky.yu 发表于 2022-8-1 14:01

开放数据库互连软件架构

应用程序
应用程序对外提供使用者交谈界面,同时对内执行资料之准备工作数据库系统所传回来的结果再显示给使用者看。简单来说,应用程序即ODBC 界面执行下列主要工作:
Request a connection(i.e.session) with a data source.
Send SQL requests to the data source.
Define storage areas and data formats for the result of SQL requests.
Request results.
Process errors.
Request a commit or rollback of operations for transcation control.
Terminate a connection a data source.
驱动管理器
驱动管理器本身是MS Windows中一个动态连接链接库文件(ODBC.DLL)。应用程序透过驱动管理器去加载并连接数据源的驱动程序(driver)并连接数据源。驱动管理器主要工作如下:
1. Uses ODBC INI file to map a data source name to a specific driver DLL.
2. Processes server ODBC initialization calls.
3. Provides entry points to ODBC functions for each driver.
4. Provides parameter validation and sequence validation for ODBC calls.
驱动程序
驱动程序也是一个动态连接链接库文件,当应用程序呼叫ODBC函数,SQLConnect 或SQLDriverConnect时,驱动管理器就会加载相对的驱动程序与应用程序呼应。驱动程序主要是执行ODBC之相对函数,并与对应的数据源(Data Source)做沟通。驱动程序之工作如下:
1. Establishes a connect to a data source.
2. Submits requests to a data sources.
3. Translates data to or from other formats,if requested by the application.
4. Return results to the application.
5. Formats errors into standard error codes and returns them to the application.
6. Declares and manipulates cursors if necessary (invisible to the application).
7. Initiates transactions if the data source requires explicit transaction initiation(invisible to the app).
数据源
数据源唯一数据库系统(DBMS)或是数据库操作系统的一个组合。举例来说,应用库系统可以同时与下列两个或其中一个数据源连接。
1. A DBMaker DBMS running on a Microsoft Windows NT accessed by NTaccessed by TCP/IP.
2. A Tandem NonStop SQL DBMS running on the Guardian 90 accessed via a gateway.
应用系统程序通过标准API来连接数据源,因此开发过程中不需指定特定的数据库系统,所以数据库系统的开放性从此被建立。笔者认为在计算机系统进入开放时代之时,我们应可体会到标准的建立与系统的发展是同样的重要。而信息系统架构在数据库的必要性也随着信息化社会的蓬勃发展而更显重要,因此在ODBC标准日益成熟的同时,我们也同时可以感受到数据库系统在开放架构下,更需扮演强而有力的角色。
依据 ODBC 的规格,其API共可分为以下九类:
1. SQLAllocEnv.
2. SQLAllocConnect.
3. SQLConnect.
4. SQLPriverConnect.
5. SQLBrowseConnect.
1. SQLDataSource.
2. SQLGetInfo.
3. SQLGetFunctions.
4. SQLGetTypeInfo.
1. SQLSetConnectOption.
IV. 准备SQL指令之需求
1. SQLAllocStmt. 2. SQLPrepare. 3. SQLSetParam. 4. SQLParamOptions. 5. SQLGetCursorName. 6.SQLSetCursorName. 7. SQLSetScrollOptions.
1. SQLExecute. 2. SQLExecDirect. 3. SQLNativeSql. 4. SQLDescribeParanl. 5. SQLNumParams. 6.SQLParamData. 7. SQLPutData.
VI. 取得执行结果及有关结果的讯息
1. SQLRowCount. 2. SQLNumResultCols. 3. SQLDescribeCol. 4. SQLColAttributes. 5. SQLBindCol. 6.SQLFetch. 7. SQLExtendedFetch. 8. SQLGetData. 9. SQLSetDos. 10. SQLMoreResults. 11. SQLError.
VII. 取得有关数据源系统回录(System tables or Catalog)的讯息
ODBC程序流程
ODBC程序流程
1. SQLColumnPrivileges. 2. SQLColumns. 3. SQLForeignkeys. 4. SQLPrimaryKeys. 5.SQLProcedureColumns. 6. SQLProcedures. 7. SQLSpecialColumns. 8. SQLStatistics. 9. SQLTablePrivileges. 10. SQLTables.
VIII. 结束 SQL 指令需求
1. SQLFreeStmt. 2. SQLCancel. 3. SQLTransact.
IX. 结束与数据源的连接
1. SQLDisconnect. 2. SQLFreeConnect. 3. SQLFreeEnv.
以上所列之 ODBC API函数,我们发现全都以 SQL 为开头。除以上述分类外,各个函数在其必要性或复杂度上, 更被规定在不同的几个层级中 ODBC 函数的层级为核心层(Core level),第一层(Level 1),和第二层(Level 2)。我们再来看一个很基本的应用程序步骤是如何呢?
回顾 ODBC 的架构及其执行过程,ODBC 造就了"应用程序独立性(Application Independency)"的特性,使应用程序不需在乎数据源是何种数据库系统或者纯粹是个资料或文本文件,只要相对驱动程序能完成衔接的功能,则应用程序即可达到高度的独立性。

页: [1]

Powered by Discuz! Archiver 7.2  © 2001-2009 Comsenz Inc.