-
vb.net教程之ODBC的结构
ODBC的结构
如果应用程序调用一个ODBC API函数,ODBC Administrator或Driver Manager会把命令传递给适当的驱动程序。经过翻译之后,驱动程序会将命令传递给特定的后端数据库服务器,采用它能理解的语言或代码。而通过ODBC返回的任何结果或结果集都将会沿着相反的方向传递。ODBC的结构如图所示:
图:ODBC的结构
对Visual Basic应用程序来说,在处理函数调用时,驱动程序和驱动程序管理器(Driver Manage)是一个整体。应用程序用ODBC API来完成以下任务:
(1)请求与数据源建立连接,创建一次会话;
(2)向数据源发出SQL请求;
(3)定义一个缓冲区和数据格式,用来存储SQL请求结果;
(4)提取SQL请求的结果;
(5)处理各种错误;
(6)给用户报告结果;
(7)事务提交或事务撤销;
(8)中断与数据源的连接。
上述结构中,驱动程序管理器(Driver Manager)是一个DLL,它由Microsoft提供,是一个带有入口函数库的动态连接,驱动程序管理器的基本任务是加载驱动程序。此外,还具有以下功能:
(1)根据ODBC.INI文件,把数据源名映射到相应的驱动程序;
(2)处理几个ODBC初始化函数;
(3)进行参数合法化检验。
结构图中SQL Server ODBC驱动程序是一个DLL,用来完成ODBC函数调用并与数据源进行对话。当应用程序调用SQLDriverConnection时,驱动程序管理器加载驱动程序。根据相应程序的要求,驱动程序可以完成以下任务:
(1)建立与数据源的连接;
(2)向数据源提交请求;
(3)根据应用程序的需要,完成数据格式的转换;
(4)把结果返回给应用程序;
(5)申请并控制游标(Cursor);
(6)根据数据源的需要,完成事务初始化。
上述这些功能对应用程序来说都是透明的。
结构图中的物理数据源是DBMS、操作系统和网络平台的一个综合体。
和Windows其他地方一样,为了处理对象,ODBC需使用相应的句柄。在能真正做些什么事情以前,必须先从ODBC或Windows获得这种句柄。ODBC提供了四个句柄:环境、连接、语句和描述符句柄,并且必须在连接数据源之前申请环境句柄。连接句柄的作用是将资源分配给实际的数据源连接。应用程序在与数据源连接以前必须先申请连接句柄,每个连接句柄只与一个环境句柄相连,一个环境句柄可与多个连接句柄相连;语句句柄用于管理对系统发出的实际请求,它必须与一个连接关联在一起,而这个连接也必须与环境关联到一起,应用程序在提交SQL请求以前必须先请求一个语句句柄,每一个语句句柄只与一个连接句柄相连,一个连接句柄可与多个语句句柄相连;描述符句柄则提供一些特殊的描述信息,例如结果集的数据列信息,或SQL语句的动态参数等等。下图显示了环境句柄、连接句柄和语句句柄之间的关系。
每一种SQL数据类型对应一种Visual Basic数据类型。在默认的情况下,驱动程序假设SQL语句中的列或参数的数据类型与连接在其上的Visual Basic数据类型是相对应的。如果Visual Basic数据类型不使用默认的数据类型,应用程序可以用函数SQLBindCol、SQLGetData、SQLBindParameter中的参数fcType来指定另外一个数据类型。在从数据源返回数据之前,驱动程序将数据转换为指定的数据类型。同样,在把数据传给数据源之前,驱动程序将指定的Visual Basic数据类型转换成SQL数据类型。
如果应用程序调用一个ODBC API函数,ODBC Administrator或Driver Manager会把命令传递给适当的驱动程序。经过翻译之后,驱动程序会将命令传递给特定的后端数据库服务器,采用它能理解的语言或代码。而通过ODBC返回的任何结果或结果集都将会沿着相反的方向传递。ODBC的结构如图所示:
图:ODBC的结构
对Visual Basic应用程序来说,在处理函数调用时,驱动程序和驱动程序管理器(Driver Manage)是一个整体。应用程序用ODBC API来完成以下任务:
(1)请求与数据源建立连接,创建一次会话;
(2)向数据源发出SQL请求;
(3)定义一个缓冲区和数据格式,用来存储SQL请求结果;
(4)提取SQL请求的结果;
(5)处理各种错误;
(6)给用户报告结果;
(7)事务提交或事务撤销;
(8)中断与数据源的连接。
上述结构中,驱动程序管理器(Driver Manager)是一个DLL,它由Microsoft提供,是一个带有入口函数库的动态连接,驱动程序管理器的基本任务是加载驱动程序。此外,还具有以下功能:
(1)根据ODBC.INI文件,把数据源名映射到相应的驱动程序;
(2)处理几个ODBC初始化函数;
(3)进行参数合法化检验。
结构图中SQL Server ODBC驱动程序是一个DLL,用来完成ODBC函数调用并与数据源进行对话。当应用程序调用SQLDriverConnection时,驱动程序管理器加载驱动程序。根据相应程序的要求,驱动程序可以完成以下任务:
(1)建立与数据源的连接;
(2)向数据源提交请求;
(3)根据应用程序的需要,完成数据格式的转换;
(4)把结果返回给应用程序;
(5)申请并控制游标(Cursor);
(6)根据数据源的需要,完成事务初始化。
上述这些功能对应用程序来说都是透明的。
结构图中的物理数据源是DBMS、操作系统和网络平台的一个综合体。
和Windows其他地方一样,为了处理对象,ODBC需使用相应的句柄。在能真正做些什么事情以前,必须先从ODBC或Windows获得这种句柄。ODBC提供了四个句柄:环境、连接、语句和描述符句柄,并且必须在连接数据源之前申请环境句柄。连接句柄的作用是将资源分配给实际的数据源连接。应用程序在与数据源连接以前必须先申请连接句柄,每个连接句柄只与一个环境句柄相连,一个环境句柄可与多个连接句柄相连;语句句柄用于管理对系统发出的实际请求,它必须与一个连接关联在一起,而这个连接也必须与环境关联到一起,应用程序在提交SQL请求以前必须先请求一个语句句柄,每一个语句句柄只与一个连接句柄相连,一个连接句柄可与多个语句句柄相连;描述符句柄则提供一些特殊的描述信息,例如结果集的数据列信息,或SQL语句的动态参数等等。下图显示了环境句柄、连接句柄和语句句柄之间的关系。
每一种SQL数据类型对应一种Visual Basic数据类型。在默认的情况下,驱动程序假设SQL语句中的列或参数的数据类型与连接在其上的Visual Basic数据类型是相对应的。如果Visual Basic数据类型不使用默认的数据类型,应用程序可以用函数SQLBindCol、SQLGetData、SQLBindParameter中的参数fcType来指定另外一个数据类型。在从数据源返回数据之前,驱动程序将数据转换为指定的数据类型。同样,在把数据传给数据源之前,驱动程序将指定的Visual Basic数据类型转换成SQL数据类型。
栏目列表
最新更新
python爬虫及其可视化
使用python爬取豆瓣电影短评评论内容
nodejs爬虫
Python正则表达式完全指南
爬取豆瓣Top250图书数据
shp 地图文件批量添加字段
爬虫小试牛刀(爬取学校通知公告)
【python基础】函数-初识函数
【python基础】函数-返回值
HTTP请求:requests模块基础使用必知必会
SQL SERVER中递归
2个场景实例讲解GaussDB(DWS)基表统计信息估
常用的 SQL Server 关键字及其含义
动手分析SQL Server中的事务中使用的锁
openGauss内核分析:SQL by pass & 经典执行
一招教你如何高效批量导入与更新数据
天天写SQL,这些神奇的特性你知道吗?
openGauss内核分析:执行计划生成
[IM002]Navicat ODBC驱动器管理器 未发现数据
初入Sql Server 之 存储过程的简单使用
uniapp/H5 获取手机桌面壁纸 (静态壁纸)
[前端] DNS解析与优化
为什么在js中需要添加addEventListener()?
JS模块化系统
js通过Object.defineProperty() 定义和控制对象
这是目前我见过最好的跨域解决方案!
减少回流与重绘
减少回流与重绘
如何使用KrpanoToolJS在浏览器切图
performance.now() 与 Date.now() 对比