ODBC_API常用函数介绍
ODBC函数
字符串函数下表包含字符串函数的示例。
有关更多信息,请参见字符串函数和使用字符串函数。
1 如果作为 ODBC 函数调用,请使用如下语法:{ fn LCASE(text) }。
日期函数下表包含日期函数的样本。
有关更多信息,请参见 日期和时间函数。
定部分,包括日、月或年。
1 如果作为 ODBC 函数调用,请使用如下语法:{ fn CURDATE() }。
数学函数下列函数是许多数据库中可用的典型函数。
有关更多信息,请参见数学函数。
注意 可以使用聚合函数 AVG( )、COUNT( )、MAX( )、MIN( ) 和 SUM( ) 在报表中创建平均值及合计系统函数下列函数是许多数据库中可用的典型函数。
有关更多信息,请参见系统函数。
1 如果作为 ODBC 函数调用,请使用如下语法:{ fn USER() }。
其它函数下列函数举例说明许多数据库中可用的实用工具函数。
有关更多信息,请参见函数。
参见字符串函数和使用字符串函数。
如下语法:{ fn LCASE(text) }。
见 日期和时间函数。
如下语法:{ fn CURDATE() }。
更多信息,请参见数学函数。
UNT( )、MAX( )、MIN( ) 和 SUM( ) 在报表中创建平均值及合计值。
有关详细信息,请参见汇总和分组。
更多信息,请参见系统函数。
如下语法:{ fn USER() }。
函数。
有关更多信息,请参见函数。
写时不匹配)。
有关在 SQL Server 中区分大小写的详细信息,请参见查询设计器注意事项。
见汇总和分组。
ODBC的接口函数
ODBC的接口函数1.连接到数据源下面的函数用于连接到数据源:(1)sqlallochandle:分配环境、相连接、语句或者描述符句柄。
(2)sqlconnect:创建与驱动程序或者数据源的相连接。
出访数据源的相连接句柄涵盖了包含状态、事务言明和错误信息的所有相连接信息。
(3)sqldriverconnect:与sqlconnect相近,用以相连接至驱动程序或者数据源。
但它比sqlconnect积极支持数据源更多的相连接信息,它提供更多了一个对话框去提示信息用户设置所有的相连接信息以及系统信息表中没定义的数据源。
(4)sqlbrowseconnect:支持一种交互方法来检索或者列出连接数据源所需要的属性和属性值。
每次调用函数可以获取一个连接属性字符串,当检索完所有的属性值,就建立起与数据源的连接,并且返回完整的连接字符串,否则提示缺少的连接属性信息,用户根据此信息重新输入连接属性值再次调用此函数进行连接。
2.获取驱动程序和数据源信息下面的函数用以以获取驱动程序和数据源信息:(1)sqldatasources:能够被调用多次来获取应用程序使用的所有数据源的名字。
(2)sqldrivers:回到所有加装过的驱动程序目录,包含对它们的叙述以及属性关键字。
(3)sqlgetinfo:返回连接的驱动程序和数据源的元信息。
(4)sqlgetfunctions:回到选定的驱动程序与否积极支持某个特定函数的信息。
(5)sqlgettypeinfo:返回指定的数据源支持的数据类型的信息。
3.设置或者获取驱动程序属性下面的函数用以设置或者以获取驱动程序属性:(1)sqlsetconnectattr:设置相连接属性值。
(2)sqlgetconnectattr:回到相连接属性值。
(3)sqlsetenvattr:设置环境属性值。
(4)sqlgetenvattr:回到环境属性值。
(5)sqlsetstmtattr:设置语句属性值。
php odbc所有操作函数
php odbc所有操作函数ODBC连接类函数odbc_connect函数:打开一个ODBC连接odbc_close函数:关闭一个已经打开的ODBC连接odbc_close_all函数:关闭所有已经打开的ODBC连接odbc_pconnect函数:打开一个持续有效的ODBC连接ODBC操作类函数odbc_commit函数:更新所有处于未决状态的操作odbc_do函数:在打开的ODBC连接上执行SQL语句odbc_exec函数:执行SQL语句odbc_execute函数:执行一个预置的SQL语句odbc_free_result函数:释放传回资料所占用的内存odbc_prepare函数:预置SQL语句的执行odbc_rollback函数:撤销所有处于未决状态的操作ODBC信息获取类函数odbc_columnprivileges函数:列出给定表的列和相关的权限odbc_columns函数:列出指定表的列的名称odbc_cursor函数:获取光标的名称odbc_data_source函数:返回连接数据库的信息odbc_error函数:获取最后的错误代码odbc_errormsg函数:获取最后的错误信息odbc_fetch_array函数:获取结果集数组odbc_fetch_into函数:获取传回的指定列odbc_fetch_object函数:返回结果集到对象odbc_fetch_row函数:获取传回的一列odbc_field_len函数:获取字段的长度odbc_field_name函数:获取字段的名称odbc_field_num函数:获取字段的序号odbc_field_precision函数:获取字段的长度odbc_field_scale函数:获取字段的浮点数odbc_field_type函数:获取字段的资料类型odbc_foreignkeys函数:返回特定表的外来键odbc_gettypeinfo函数:返回数据库的类型信息odbc_longreadlen函数:设定传回栏的最大值odbc_num_fields函数:获取字段数目odbc_num_rows函数:获取传回的列数目odbc_primarykeys函数:返回列的名字作为表的主键odbc_procedurecolumns函数:返回检索过程的参数信息odbc_procedures函数:获取存在于特定数据源中的进程信息odbc_result_all函数:传回HTML表格信息odbc_result函数:获取结果数据odbc_specialcolumns函数:返回一个表中在传送更新时可以自动更新的列odbc_statistics函数:获取表的状态及其索引odbc_tableprivileges函数:列出表格和每个表格关联的权限odbc_tables函数:获取特定数据库上的表的名称odbc_autocommit函数:开启或关闭自动更新odbc_binmode函数:设定二进制的数据处理方式odbc_next_result函数:检查下一个结果集是否可用odbc_setoption函数:调整ODBC设定。
ODBC函数讲解
ODBC 函数本节列出了ODBC 支持的标量函数。
您的数据库系统可能不全部支持这些函数。
请参见您的数据库系统的文档,了解支持哪些函数。
可以用下面的语法在SQL 语句中使用这些函数:{fn scalar-function}其中scalar-function 是下列各表中列出的函数之一。
例如:SELECT {fn UCASE(NAME)} FROM EMP字符串函数下表列出了ODBC 支持的字符串函数。
列出的字符串函数可使用下列参数:•string_exp 可以是列名、文字字符串或另一个标量函数的结果,其中基础数据类型为SQL_CHAR、SQL_VARCHAR 或SQL_LONGVARCHAR。
•start、length 和count 可以是另一标量函数的结果或是文字数字值,其中基础数据类型为SQL_TINYINT、SQL_SMALLINT 或SQL_INTEGER。
字符串函数是基于 1 的;也就是说,字符串的第一个字符为1。
字符串文字必须括在单引号内。
功能返回值ASCII(string_exp) string_exp最左边字符的ASCII 代码值,为整数。
BIT_LENGTH(string_exp) 字符串表达式的长度,以位为单位。
CHAR(code) code指定的ASCII 代码值代表的字符。
code应在0 到255 之间,否则返回值将取决于数据源。
CHAR_LENGTH(string_exp) 如果字符串表达式为字符数据类型,则以字符为单位返回字符串表达式的长度;否则,以字节为单位返回字符串表达式的长数字函数下表列出了ODBC 支持的数字函数。
列出的数字函数可使用下列参数:•numeric_exp可以是列名、数字文字或其它标量函数的结果,其中基础数据类型为SQL_NUMERIC、SQL_DECIMAL、SQL_TINYINT、SQL_SMALLINT、SQL_INTEGER、SQL_BIGINT、SQL_FLOAT、SQL_REAL 或SQL_DOUBLE。
ODBC
ODBC的体系结构(2)
用户的ODBC应用程序如何和数据库交互
ODBC API提供的接口函数 SQL
ODBC的体系结构(3)
驱动程序管理器(ODBC Driver Manager)的 主要作用
管理应用程序和驱动程序的通信 装载、管理驱动程序 管理和配置数据源
负责的主要文件
C:\winnt\system32\odbc32.dll
ODBC API(9)-SQLBindCol
StatementHandle:STMT句柄。 ColumnNumber:列的位置,从1开始计算。 ValueType:指明用于和参数绑定的C语言数据类型。 ParameterType:指明在存储过程中ODBC数据类型。 BufferLength:指明参数指针所指向的缓冲区的字节数 BufferLength 大小。对于字符串和结构需要指明大小,而对于普通的变 量如SQLINTEGER,SQLFLOAT等设置为0就可以了。 StrLen_or_IndPtr:返回拷贝的缓冲区的数据的字节数, 数值型数据为0,字符型数据为SQL_NTS。
ODBCAPI(9)-SQLGetData
得到当前记录的对应列值 SQLRETURN SQLGetData( SQLHSTMT StatementHandle, SQLUSMALLINT ColumnNumber, SQLSMALLINT TargetType, SQLPOINTER TargetValuePtr, SQLINTEGER BufferLength, SQLINTEGER * StrLen_or_IndPtr); SQLGetData和SQLBindCol的区别
添加数据源(2)
系统DSN和用户DSN区别 不同DBMS驱动程序的设置并不相同, 由DBMS自身提供 ODBC数据源配置过程.doc SQLServer的用户名和密码问题
11.3.1 ODBC API编程流程_Visual C++从入门到精通_[共4页]
240 由于SDK 包含了使用API 的必需资料,所以常把仅使用API 来编写Windows 应用程序的开发方式叫做“SDK 编程”。
而API 和SDK 是开发Windows 应用程序所必需的东西,所以其他编程框架和类库均以它们为基础,比如VCL 和MFC 。
11.3 ODBC API 编程本节视频教学录像:23分钟通过对本节的学习,你将学会如何通过ODBC 的API 函数对数据库进行访问。
11.3.1 ODBC API 编程流程用ODBC API 创建数据库应用程序的流程一般分为以下6步。
1. 连接数据源在使用ODBC 功能时必须先申请环境句柄,然后在环境句柄的基础上创建数据库连接,最后在数据连接的基础上执行SQL 语句。
因此,这一步须分配一个SQLHENV 类型的变量在ODBC 环境中做环境句柄使用,为数据源分配连接句柄,由ODBC API 函数SQLAllocConnect()申请连接句柄,用SQLConnect()把连接句柄与数据库连接。
此步可通过SQLSetConnectAttr()来设置连接属性。
该步用到的常用函数如下。
⑴ SQLALLocHandle()函数。
该函数用来申请句柄。
原型为:SQLRETURN SQLAllocHandle( SQLSMALLINT HandleType,SQLHANDLE InputHandle,SQLHANDLE * OutputHandlePtr);参数HandleType 的取值可以为SQL_HANDLE_ENV (环境句柄)、SQL_HANDLE_DBC (数据库连接句柄)或者SQL_HANDLE_STMT (SQL 语句句柄)。
InputHandle 为输入句柄,提 示:每次执行SQL 语句前都必须申请语句句柄,并且在执行完成后释放。
ODBC详解
下面对上述步骤做详细的介绍。
5.2.1步骤1:连接数据源
为了连接数据源,必须要建立一个数据源连接的环境句柄。通过调用SQLAllocEnv函数实现对环境句柄的分配,在ODBC 3.0里,这个函数已经被SQLAllocHandle取代,但是熟悉ODBC API的开发人员还是习惯用这个函数建立环境句柄,因为VC++开发平台有一个映射服务,这个服务将程序代码对函数SQLAllocEnv的调用转向对函数SQLAllocHandle的调用。
通过调用如下代码可以通过应用程序动态创建数据源MYDB:
BOOL CreateDSN()
{
char* szDesc;
int mlen;
szDesc=new char[256];
sprintf(szDesc,"DSN=%s: DESCRIPTION=TOC support source: \
DBQ=%s: FIL=MicrosoftAccess: \
{
//执行其它操作
…………
}
retcode = :: SQLExecute (hstmt, (UCHAR*)pszSQL, SQL_NTS );
if(rcode == SQL_SUCCESS) // SQL语句执行成功
{
//执行其它操作
…………
}
5.2.4步骤4:获取结果集
SQL语句执行成功以后,应用程序必须准备接收数据,应用程序需要把SQL语句执行结果绑定到一个本地缓存变量里。但是SQL执行语句执行的结果并不是直接传送给应用程序,而是在应用程序准备接收数据的时候通知驱动程序其已经准备好接收数据,应用程序通过调用SQLFetch函数返回结果集的一行数据。
11.3.2 ODBC API编程实例_Visual C++从入门到精通_[共6页]
24411.3.2 ODBC API 编程实例本小节利用ODBC API 函数实现对数据库的访问。
【范例11-1】 利用ODBC API 函数设计应用程序,对11.2.2小节中的学生成绩管理数据库进行操作,该数据库已经注册为数据源test 。
学生成绩管理数据库有3张用户表,分别是学生表、成绩表和课程表。
第1步:创建工程ODBC_API利用前面介绍的内容,用MFC AppWizard 创建一个单文档,不基于数据库的工程ODBC_API 。
第2步:给工程ODBC_API 添加资源 ➊ 选择工作空间中的【ResourceView 】选项卡,展开【Menu 】节点,双击【IDR_MAINFRAME】,在编辑区双击【帮助】菜单后面的空白菜单,在【Caption 】文本框中输入“访问数据库”。
➋ 双击【访问数据库】的子菜单,设置【ODBC API 】的【ID 】为ID_ODBCAPI ,并将【访问数据库】菜单拖动到【帮助】菜单前面。
➌ 选择【View 】 【ClassWizard 】菜单,打开【MFC ClassWizard 】对话框,在【Message Maps 】选项卡中,在【Class name 】下拉列表中选择“CODBC_API View ”选项,在【Object IDs 】列表框中选择“ID_ODBCAPI ”选项,在【Messages 】列表框中选择“COMMAND ”选项,然后单击【Add Function】,在弹出的对话框中单击【OK 】按钮,再单击【OK 】按钮关闭【MFC Class Wizard 】对话框。
➍ 右击【ResourceView 】选项卡中的【Dialog 】节点,选择【Insert Dialog 】菜单,插入对话框IDD_DIALOG1。
在对话框上添加两个Static Text 控件、1个Edit Box 控件、1个List Box 控件和1个List Control 控件,均使用用默认的ID 。
使用ODBC API技术进行数据转换
对不 同数据 库系 统 .每个 D MS都定 义 了一 B 1读 取数 据源 的元数 据 、 元数 据是 关 于数据 的数据 。 在数 据库 中 . 元数 套 自己的数据类 型 .但 不 论数 据类 型在各 个 系统 据是 对数 据库 中各个 对 象 的描述 。在 关 系数 据库 中如何 变化 .其 功能 都满 足用 户 的数据处 理 基本 中 , 种 描 述 就是 对 表 、 、 据库 其 他 对 象 的定 要 求 . 这 列 数 如数 值 型 , 括 整 型 、 型 、 包 实 浮点 型 、 双精 度 型等 : 字符 型 , 括定 长 、 长等 ; 包 变 日期型 , 括 年 、 包 义 。读 取 数据 库元数 据 常用 的方法有 :
・ —
f 龚圣峰 , 6 1 张曦煌. 于 A 基 ቤተ መጻሕፍቲ ባይዱMLn x的 图像采集 与解码 的 iu
T 计 1 2 0 (6. 【】 3米韶 华 , 东, 小峰 , 树 潭 . 3 24 康 杨 戴 ¥ C 40嵌 入 式 音 频 系 实现 『. 算 机 工 程 与设 计 . 0 90)
() 3 通过 A O对象 D 通 过 A O 中 C N E T0 对 象 的 G t D 0 N C 1N e. a lN I s n () 2 执行 S L语 句 并获 得 或处 理数 据 。使 用 T be a e 方法可 以得到数 据 源的表信 息 .而通 O S L xc i c 等 向 O B Q E eDr t e D C管理 器提 交 S L指 令 。 过 A O 中 R C R S T对 象 中的 Fe D f 属 性 O D E O DE i d es l 使 用 S L id o、Q F th 获得数 据 。 Q B n C lS L e 等 c 可 以得 到数据集 的各 种列 信 息和类 型信 息 但在
ODBC 数据库链接函数库
ODBC 数据库链接函数库开放资料链接(Open Database Connecti vity, ODBC) 是链接数据库的共通界面。
ODBC 是由微软主导的数据库链接标准,实作环境也以微软的系统最成熟。
在UNIX 系统中,通常要使用其它厂商所提供的ODBC 界面,有些UNIX 厂商会自己提供ODBC 界面(如S UN 有为Solaris 提供ODBC)。
ODBC 和数据库的查询采用SQL 语言,这和大部份的数据库查询方式一样,这使得系统可以很容易和各种数据库沟通。
当然,透过ODBC 界面,后端的数据库不一定要DBMS 这种大型数据库系统,亦可以是资料表(如Microsoft Access)、或者是试算表(如Microsoft Excel)。
odbc_autocommit: 开关自动改动功能。
odbc_b inmode: 配置二进位资料处理方式。
odbc_close: 关闭ODBC 链接。
odbc_close_all: 关闭所有ODBC 链接。
odb c_commit: 改动ODBC 数据库。
odbc_connect: 链接至ODBC 数据库。
odbc_cursor: 取得游标名。
< br>odbc_do : 执行SQL 指令。
odbc_exec: 执行SQL 指令。
< br>odbc_ex ecute: 执行预置SQL 指令。
odbc_fetch_into: 取得返回的指定列。
odbc_fetch_row: 取得返回一列。
< br>odbc_fi eld_name: 取得字段名称。
odbc_field_type: 取得字段资料类型。
odbc_field_len: 取得字段资料长度。
< br>odbc_fr ee_result: 释出返回资料的内存。
odbc_longreadl en: 配置返回栏的最大值。
odbc_num_fields: 取得字段数目。
ODBCAPI参考资料
ODBCAPI参考资料使用ODBC API进行数据库编程ODBC(Open Database Connectivity,开放数据库连接),是由 Microsoft 公司基于X/OPEN CLI 提出的用于访问数据库的应用程序编程接口,主要完成应用程序和数据库系统之间的中间件功能。
基于 ODBC 的应用程序通过 ODBC 提供的 API 与数据库进行交互,在避免了应用程序直接操作数据库系统的同时,极大的增强了应用程序的可移植性、扩展性和可维护性。
ODBC定义了访问数据库的API一个规范,这些API独立于不同厂商的数据库产品。
在开始使用ODBC编程之前,需要安装ODBC驱动程序,并在ODBC驱动管理器中注册。
Windows 操作系统自带了ODBC驱动程序管理器, 可以在“控制面板->管理工具->ODBC数据源管理器” 找到。
一、使用ODBC需要包含的头文件和库文件ODBC头文件有5个:sql.h, sqlext.h, sqltypes.h, sqlucode.h and odbcinst.h。
一般情况下用到sql.h 和sqlext.h。
#include "sql.h" // This is the the main include for ODBC Core functions. #include "sqlext.h" // This is the include for applications using the Microsoft SQL Extensions#include "sqltypes.h" // This file defines the types used in ODBC#include "sqlucode.h" // This is the unicode include for ODBC Core functions#include "odbcinst.h" // This is the application include file for the SQL Server driver specific defines.库文件:odbc32.lib二、ODBC 应用的结构图 2.1 一个简单的 ODBC 应用的概念模型一个ODBC 程序通常可以分为三个模块:初始化、数据库操作和资源释放。
ODBC详解
5.1 了解ODBC APIODBC是一种利用SQL的程序设计接口。
利用ODBC让应用程序的编写者幸免了与数据源相联的复杂性。
这项技术目前已经取得了大多数DBMS厂商们的普遍支持。
ODBC是一种利用SQL 的程序设计接口。
利用ODBC让应用程序的编写者幸免了与数据源相联的复杂性。
这项技术目前已经取得了大多数DBMS厂商们的普遍支持。
Microsoft Developer Studio为大多数标准的数据库格式提供了32位ODBC驱动器。
这些标准数据格式包括有:SQL Server,Access,Paradox,dBase,FoxPro,Excel,Oracle 和Microsoft Text。
若是用户希望利用其他数据格式,用户需要相应的ODBC驱动器及DBMS。
ODBC API是一个内容丰硕的数据库编程接口,包括60多个函数、SQL数据类型和常量的声明。
ODBC API 是独立于DBMS和操作系统的,而且它与编程语言无关。
ODBC API 以X/Open 和ISO/IEC中的CLI标准为基础,完全实现了这两种标准,并添加了基于视图的数据库应用程序开发人员所需要的一起特性,例如可转动光标。
ODBC API中的函数由特定DBMS驱动程序的开发人员实现,应用程序用这些驱动程序挪用函数,以独立于DBMS的方式访问数据。
ODBC API涉及了数据源连接与治理、结果集检索、数据库治理、数据绑定、事务操作等内容,目前的最高版本是。
5.2 ODBC API编程步骤通常利用ODBC API开发数据库应用程序需要通过如下步骤:•连接数据源。
•分派语句句柄。
•预备并执行SQL语句。
•获取结果集。
•提交事务。
•断开数据源连接并释放环境句柄。
下面对上述步骤做详细的介绍。
5.2.1 步骤1:连接数据源为了连接数据源,必需要成立一个数据源连接的环境句柄。
通过挪用SQLAllocEnv函数实现对环境句柄的分派,在里,那个函数已经被SQLAllocHandle取代,可是熟悉ODBC API的开发人员仍是适应用那个函数成立环境句柄,因为VC++开发平台有一个映射效劳,那个效劳将程序代码对函数SQLAllocEnv的挪用转向对函数SQLAllocHandle的挪用。
重要ODBC操作函数
重要ODBC操作函数调用Requery()成员函数来重新查询和建立记录集。
Requery()有两个重要用途:一是使记录集能反映用户对数据源的改变;二是按照新的过滤或排序方法查询记录并重新建立记录集。
在调用Requery之前,可调用CanRestart()来判断记录集是否支持Requery()操作。
要记住Requery 只能在成功调用Open()后调用,所以程序应调用IsOpen来判断记录集是否已建立。
函数的原型如下:CRecordset提供了几个成员函数用来在记录集中滚动,如下所示。
当用这些函数滚动到一个新记录时,框架会自动地把新记录的内容拷贝到域数据成员中。
void MoveNext( ); //前进一个记录void MovePrev( ); //后退一个记录void MoveFirst( ); //滚动到记录集中的第一个记录void MoveLast( ); //滚动到记录集中的最后一个记录void SetAbsolutePosition( long nRows );该函数用于滚动到由参数nRows指定的绝对位置处。
若nRows为负数,则从后往前滚动。
例如,当nRows为-1时,函数就滚动到记录集的末尾。
注意,该函数不会跳过被删除的记录。
virtual void Move( long nRows, WORD wFetchType = SQL_FETCH_RELATIVE );该函数功能强大。
通过将wFetchType参数指定为SQL_FETCH_NEXT、SQL_FETCH_PRIOR、SQL_FETCH_FIRST、SQL_FETCH_LAST和SQL_FETCH_ABSOLUTE,可以完成上面五个函数的功能。
若wFetchType为SQL_FETCH_RELATIVE,那么将相对当前记录移动,若nRows为正数,则向前移动,若nRows为负数,则向后移动。
另外,必须保证滚动没有超出记录集的边界。
odbc中的scope_identity函数
在ODBC(Open Database Connectivity)中,并没有直接提供像T-SQL中的SCOPE_IDENTITY()函数一样的内建函数。
SCOPE_IDENTITY()通常用于获取最后插入操作中生成的标识列的值。
但是,ODBC提供了其他方法来获取类似的信息,尤其是在执行INSERT语句后获取生成的标识值。
以下是使用ODBC获取生成的标识值的一般步骤:使用SQLExecDirect执行INSERT语句:SQLExecDirect(hStmt, (SQLCHAR*)"INSERT INTO YourTable (Column1, Column2) VALUES ('Value1', 'Value2')", SQL_NTS);使用SQLRowCount获取受影响的行数:SQLLEN rowCount;SQLRowCount(hStmt, &rowCount);如果插入成功(rowCount > 0),则获取生成的标识值:SQLRETURN ret;SQLLEN id;SQLINTEGER len;if (rowCount > 0) {ret = SQLBindCol(hStmt, 1, SQL_C_SLONG, &id, sizeof(SQLLEN), &len);ret = SQLFetch(hStmt);}上述代码中,假设标识列的索引为1。
你需要根据你的表结构调整SQLBindCol的参数。
请注意,这个方法假定你正在使用ODBC驱动程序,它支持SQLRowCount和SQLBindCol这些函数。
不同的数据库和ODBC驱动可能会有些许差异,因此最好查看你使用的数据库和ODBC驱动的文档以获取准确的信息。
3使用ODBCAPI访问数据库
3使⽤ODBCAPI访问数据库主要内容:ODBC API的体系结构使⽤ODBC API开发数据库应⽤程序的⼀般步骤使⽤函数SQLAllocHandle分配句柄使⽤函数SQLConnect、SQLDriverConnect、SQLBrowseConnect 连接数据源使⽤函数SQLPrepare和SQLExecute执⾏SQL语句使⽤函数SQLBindCol()绑定数据库字段使⽤函数SQLGetDiagRec和SQLGetDiagField处理错误使⽤函数SQLFetch移动数据库记录指针使⽤ODBC API 进⾏事务处理使⽤函数SQLDisconnect断开数据源的连接⽬录ODBC API 基础 (3)ODBC API句柄 (3)ODBC数据类型 (5)ODBC诊断 (6)使⽤ODBC API变成建⽴应⽤程序 (8)ODBC API编程模型概述 (8)连接数据库 (11)准备并执⾏SQL语句 (16)获取记录集 (18)记录的添加、删除和更新 (20)错误处理 (23)事务处理 (23)断开数据源连接并释放环境句柄 (25)ODBC API 基础ODBC API句柄ODBC API 实现数据库操作的⼿段是句柄。
在ODBC中,使⽤不同的句柄(HANDLE)来标志环境(environment)、连接(Connection)、语句(statement)、描述符(description)等。
句柄是⼀个应⽤程序变量,系统⽤它来存储关于应⽤程序的上下⽂信息和应⽤程序所⽤到的⼀些对象。
1、环境句柄环境是存取数据的全局性背景,与环境相关的是全局的所有信息。
例如:环境状态、当前环境状态诊断、当前在环境上分配的连接句柄、每个环境属性的当前设置。
在实现ODBC的⼀段代码(Driver Manager或者驱动程序)中,环境句柄标识包含这个信息的结构。
环境句柄在ODBC应⽤程序中不经常⽤。
他们经常⽤来调⽤SQLDataSources和SQLDrivers,⼜是⽤来调⽤函数SQLAllocHandle、SQLEndTran、SQLFreeHandle、SQLGetDiagField和SQLGetDiagReg。
ODBC_API开发教程
ODBC API开发教程第 1 章介绍在文章的开头做一个习惯性的介绍。
本文从2002年11月开始写,基本上在2002年12月时完成,当时本来作为一本书的一个章节,后来由于某些原因没有完成该书。
这段时间将本文内容进行了一些整理,放在网上希望能够给大家一些帮助。
本文的内容主要是关于ODBC 的功能,所有内容都与ODBC 3.X版本兼容。
本文简要介绍了ODBC的历史和发展,也介绍了ODBC的基本的常用功能。
大致包括:使用ODBC进行数据库连接利用ODBC直接执行SQL语句ODBC光标类型介绍利用滚动光标或非滚动光标进行结果集查询存储过程的调用与参数绑定SQL语句的准备执行方式BLOB数据字段的查询和修改本文的数据库利用了MS SQL Server,ODBC在使用时是与数据库无关的所以所有例程都可以运行在其他数据库上,例如Oracle。
其实利用Access数据库来进行练习也是可以的,但是由于Access不能支持存储过程,所以我没有使用Access 数据库。
由于例程代码没有找到,所以没有就没有办法提供,但是文中的代码都比较详细而且有具体的解释。
书中有很多错误和不足之处希望大家能够容忍和包含,也欢迎来信指出。
第 2 章 ODBC API访问数据库2.1 ODBC简要介绍2.1.1 在没有ODBC以前请允许我将那时候成为第二黑暗时代,第一黑暗时代是没有数据库的时代。
ODBC的出现结束了数据库开发的无标准时代。
在没有ODBC以前不同的数据库的开发所采用的标准是不统一的。
一般来讲不同的数据库厂商都有自己的数据库开发包,这些开发包支持两种模式的数据库开发:预编译的嵌入模式(例如Oracle 的ProC,SQL Server的ESQL)和API调用(例如Oracle的OCI)。
对于一个开发人员来讲使用预编译方式开发是极其痛苦的,我就有过这样的经历,所有的SQL语句要写在程序内部,并且遵守一定的规则,然后由数据库厂商的预编译工具处理后形成C代码,最后由C编译器进行编译。
【ODBC】ODBC连接数据库详细说明
【ODBC】ODBC连接数据库详细说明ODBC一、ODBC简介开放数据库互连(ODBC)是微软提出的数据库访问接口标准。
开放数据库互连定义了访问数据库的API一个规范,这些API独立于不同厂商的DBMS,也独立于具体的编程语言。
通过使用ODBC,应用程序能够使用相同的源代码和各种各样的数据库进行交互。
这使得开发者不需要以特殊的数据库管理系统DBMS为目标,或者了解不同支撑背景的数据库的详细细节,就能够开发和发布客户/服务器应用程序。
下面是ODBC应用系统的体系结构。
二、ODBC句柄应用程序运行后,为维护执行的状态,ODBC 管理器和ODBC 驱动程序中必须保持足够的控制信息。
应用程序要求ODBC 管理器和ODBC 驱动程序为ODBC环境、每个连接以及每个SQL语句分配描述/控制信息存储空间,并返回指向各个存储区的句柄供其使用。
(1)环境句柄:整个ODBC上下文的根句柄。
标识全程数据访问控制信息的内存结构,包括有效连接句柄以及当前活动连接句柄。
ODBC将环境句柄定义为HENV类型的变量。
应用程序使用单一的环境句柄,在连接到数据源以前必须申请该句柄。
(2)连接句柄:管理有关数据库会话的所有信息。
连接句柄标识每个特定的连接信息的内存结构。
ODBC将环境句柄定义为HDBC类型的变量。
应用程序在连接数据源之前申请连接句柄。
每个连接句柄与环境句柄有关,环境句柄上可以有多个与其有关的连接句柄。
(3)语句句柄:ODBC语句包括应用访问数据源的SQL语句和语句相关的管理信息,语句句柄标识每个语句管理信息的内存结构。
ODBC将语句句柄定义为HSTMT类型的变量。
应用程序在提交SQL 请求之前也必须申请语句句柄。
每个语句句柄与一个连接句柄有关,每个连接句柄上可以有多个与其有关的语句句柄。
三、ODBC程序执行流程Ø分配环境句柄基于ODBC3.X版本的应用统一使用SQLAllocHandle来分配句柄。
调用时设计不同的句柄类型就可以获得该类型的句柄。
在VB中直接用ODBC API访问数据库
在VB中直接用ODBC API访问数据库.txt31岩石下的小草教我们坚强,峭壁上的野百合教我们执著,山顶上的松树教我们拼搏风雨,严寒中的腊梅教我们笑迎冰雪。
在VB中直接用ODBC API访问数据库中国航空信息中心吴斌计算机世界 19980608开放数据库互连(ODBC)已经成为Client/Server数据库应用系统中访问远程数据库的一个标准。
作为强大的前端开发工具,Visual Basic为开发者提供了多种访问ODBC数据源的途径,如JET数据库引擎、ODBC API函数、RDO接口等。
比较而言,直接使用ODBC API函数的编程难度最大,但获得的存取数据库的性能也最佳。
ODBC API函数的声明方法与使用其它动态库函数一样,在VB中使用ODBC API函数之前,必须事先声明将要使用的函数、常量和数据结构。
ODBC API函数驻留在ODBC运行动态库ODBC.DLL(16位)或ODBC 32.DLL(32位)中,该动态库位于Windows子目录system中。
通常做法是在VB项目中单独使用一个模块文件,然后将ODBC API声明语句加入其中,下面就是本文实例中使用的模块文件module1.bas的内容:Declare Function SQLAllocEnv Lib "odbc32.dll" (phenv&) As IntegerDeclare Function SQLAllocConnect Lib "odbc32.dll" (ByVal henv&, phdbc&) As Integer Declare Function SQLAllocStmt Lib "odbc32.dll" (ByVal hdbc&, phstmt&) AsInteger Declare Function SQLConnect Lib "odbc32.dll" (ByVal hdbc&, ByVal szDSN$,ByVal cbDSN%, ByVal szUID$, ByVal cbUID%, ByVal szAuthStr$, ByVal cbAuthStr%) As Integer Declare Function SQLColAttributesString Lib "odbc32.dll" Alias "SQLColAttributes" (ByVal hstmt&, ByVal icol%, ByVal fDescType%, ByVal rgbDesc As String, ByVal cbDescMax%, pcbDesc%, pfDesc&) As IntegerDeclare Function SQLDisconnect Lib "odbc32.dll" (ByVal hdbc&) As IntegerDeclare Function SQLExecDirect Lib "odbc32.dll" (ByVal hstmt&, ByVal szSqlStr$, ByVal cbSqlStr&) As IntegerDeclare Function SQLFetch Lib "odbc32.dll" (ByVal hstmt&) As IntegerDeclare Function SQLFreeConnect Lib "odbc32.dll" (ByVal hdbc&) As IntegerDeclare Function SQLFreeEnv Lib "odbc32.dll" (ByVal henv&) As IntegerDeclare Function SQLFreeStmt Lib "odbc32.dll" (ByVal hstmt&, ByVal fOption%) As IntegerDeclare Function SQLGetData Lib "odbc32.dll" (ByVal hstmt&, ByVal icol%,ByVal fCType%, ByVal rgbValue As String, ByVal cbValueMax&, pcbValue&) As Integer Declare Function SQLNumResultCols Lib "odbc32.dll" (ByVal hstmt&, pccol%) As Integer Global Const SQL_C_CHAR As Long = 1Global Const SQL_COLUMN_LABEL As Long = 18Global Const SQL_DROP As Long = 1Global Const SQL_ERROR As Long = -1Global Const SQL_NO_DATA_FOUND As Long = 100Global Const SQL_SUCCESS As Long = 0需要说明的是,在函数声明时,应该根据程序的运行环境选择相应的动态库。
odbc编程
odbc编程ODBC编程是一种常用的数据库访问方式,它提供了一种标准的接口,使得不同的应用程序可以通过相同的方式来访问不同的数据库。
本文将介绍ODBC编程的基本概念、使用方法以及一些常见的应用场景。
一、ODBC编程的基本概念ODBC全称为Open Database Connectivity,它是一种应用程序接口(API),用于访问各种数据库的标准。
通过ODBC,应用程序可以使用统一的方式来连接、查询和更新数据库。
ODBC的核心概念包括数据源、数据源名称(DSN)、驱动程序和连接。
1. 数据源(Data Source):数据源是指数据库的名称或位置,可以是本地的数据库文件,也可以是远程的数据库服务器。
在ODBC中,数据源可以用一个字符串来表示,比如一个文件路径或一个网络地址。
2. 数据源名称(Data Source Name,DSN):DSN是一个标识符,用于标识一个具体的数据源。
它包含了连接数据库所需的信息,比如数据库的类型、地址、用户名和密码等。
在ODBC编程中,我们可以通过DSN来连接数据库,而不需要关心具体的数据库类型和连接细节。
3. 驱动程序(Driver):驱动程序是ODBC的核心组成部分,它负责实际连接数据库并执行相应的操作。
不同的数据库类型通常需要不同的驱动程序来进行连接和操作。
在ODBC编程中,我们需要根据数据库类型选择合适的驱动程序。
4. 连接(Connection):连接是指应用程序与数据库之间建立的通信通道。
在ODBC编程中,我们首先需要建立一个连接,然后才能进行后续的查询和更新操作。
连接可以通过DSN来建立,也可以直接指定连接参数。
二、ODBC编程的使用方法ODBC编程主要包括以下几个步骤:加载驱动程序、建立连接、执行SQL语句、处理结果和关闭连接。
下面我们将分别介绍这些步骤的具体实现。
1. 加载驱动程序:在使用ODBC编程之前,我们首先需要加载相应的驱动程序。
驱动程序通常是一个动态链接库(DLL)文件,我们可以使用系统提供的函数来加载和卸载它。
php常用ODBC函数集(详细)
php常⽤ODBC函数集(详细)odbc_connect函数:打开⼀个ODBC连接odbc_close函数:关闭⼀个已经打开的ODBC连接odbc_close_all函数:关闭所有已经打开的ODBC连接odbc_pconnect函数:打开⼀个持续有效的ODBC连接odbc_commit函数:更新所有处于未决状态的操作odbc_do函数:在打开的ODBC连接上执⾏SQL语句odbc_exec函数:执⾏SQL语句odbc_execute函数:执⾏⼀个预置的SQL语句odbc_free_result函数:释放传回资料所占⽤的内存odbc_prepare函数:预置SQL语句的执⾏odbc_rollback函数:撤销所有处于未决状态的操作odbc_columnprivileges函数:列出给定表的列和相关的权限odbc_columns函数:列出指定表的列的名称odbc_cursor函数:获取光标的名称odbc_data_source函数:返回连接数据库的信息odbc_error函数:获取最后的错误代码odbc_errormsg函数:获取最后的错误信息odbc_fetch_array函数:获取结果集数组odbc_fetch_into函数:获取传回的指定列odbc_fetch_object函数:返回结果集到对象odbc_fetch_row函数:获取传回的⼀列odbc_field_len函数:获取字段的长度odbc_field_name函数:获取字段的名称odbc_field_num函数:获取字段的序号odbc_field_precision函数:获取字段的长度odbc_field_scale函数:获取字段的浮点数odbc_field_type函数:获取字段的资料类型odbc_foreignkeys函数:返回特定表的外来键odbc_gettypeinfo函数:返回数据库的类型信息odbc_longreadlen函数:设定传回栏的最⼤值odbc_num_fields函数:获取字段数⽬odbc_num_rows函数:获取传回的列数⽬odbc_primarykeys函数:返回列的名字作为表的主键odbc_procedurecolumns函数:返回检索过程的参数信息odbc_procedures函数:获取存在于特定数据源中的进程信息odbc_result_all函数:传回HTML表格信息odbc_result函数:获取结果数据odbc_specialcolumns函数:返回⼀个表中在传送更新时可以⾃动更新的列odbc_statistics函数:获取表的状态及其索引odbc_tableprivileges函数:列出表格和每个表格关联的权限odbc_tables函数:获取特定数据库上的表的名称odbc_autocommit函数:开启或关闭⾃动更新odbc_binmode函数:设定⼆进制的数据处理⽅式odbc_next_result函数:检查下⼀个结果集是否可⽤odbc_setoption函数:调整ODBC设定。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
integer namelen表名长度。
ref string sztype表的类型名。
integer typelen表的类型名长度。
返回值:integer ,成功时,返回0,失败返回值小于0。
函数功能:获取表的信息。
6、function integer SQLColumns(long hstmt,ref stringsztablequalifier,integer tablequalifierlen,ref string szowner,integer owerlen,ref string szname,integer namelen, ref string sztype,integer typelen)library "odbc32.dll"
参数:long hstmt SQL语句句柄
ref string sztablequalifier表的qualifier名。
integer tablequalifierlen表的qualifier名的长度。
ref string szowner表的所有者名。
integer owerlen表的所有者名长度。
szuid,integer uidlen,ref string szpwd,integer pwdlen) library "odbc32.dll"
function integer SQLDisconnect (long hdbc) library "odbc32.dll"
function integer SQLAllocStmt(long hdbc,ref long hstmt)library "odbc32.dll"
ODBC API
作者: moonbreak,出处:blog,责任编辑:唐小若,
2008-09-03 10:03
以下为ODBC API的常用十四个函数,先列出在PowerBuilder中外部函数引用声明:
function integer SQLAllocEnv(ref long phenv) library "odbc32.dll"
ref long actlen) library "odbc32.dll"
参数:long hstmt SQL语句句柄
integer colnum 1-5(是否有资格,拥有者名字、类型、注释)。
integer datatype 1-8,12,99。
ref string name程序字符串变量。
long maxlen可变。
Integng szpwd,用户口令。
Ref integer pwdlen,用户口令长度。
返回值:integer ,成功时,返回值大于0,失败返回值小于0。
函数功能:连接ODBC数据源,并返回连接句柄。
4、function integer SQLDisconnect (long hdbc) library"odbc32.dll"
存放在phenv中的值成为以后OBDC API函数调用的唯一标识符。
返回值:integer成功时,返回0,失败返回值小于0。
函数功能:获取ODBC环境句柄。
2、function integer SQLAllocStmt(long hdbc,ref long hstmt)library"odbc32.dll"
参数:long hdbc连接句柄。
返回值:integer ,成功时,返回0,失败返回值小于0。
函数功能:断开连接ODBC数据源。
5、function integer SQLTables(long hstmt,ref stringsztablequalifier,integer tablequalifierlen,ref string szowner,integer owerlen,ref string szname,integer namelen,ref string sztype,integer typelen)library "odbc32.dll"
ref string szpwd,integer pwdlen) library "odbc32.dll"
参数:long hstmt ,调用SQLAllocStmt()函数获取的句柄。
Ref string szdsn,ODBC数据源名。
Integer dsnlen ,ODBC数据源名的长度。
Ref string szuid ,用户帐号。
function integer SQLFreeStmt(long hstmt,integer Options)library "odbc32.dll"
1、function integer SQLAllocEnv(ref long phenv) library"odbc32.dll"
参数:ref long phenv引用传递的long类型参数,保存该函数返回的OBDC环境的句柄。
参数:long lenv ODBC环境句柄
返回值:integer ,成功时,返回0,失败返回值小于0。
函数功能:释放ODBC环境句柄。
11、function integer SQLFreeStmt(long hstmt,integer Options)library"odbc32.dll"
参数:long hstmt SQL语句句柄。
function integer SQLTables(long hstmt,ref string sztablequalifier,integer tablequalifierlen,ref string szowner,integer owerlen,ref string szname,integer namelen,
ref string sztype,integer typelen)library "odbc32.dll"
function integer SQLBindCol(long hstmt,integer colnum,integer datatype,ref string name,long maxlen,ref long actlen) library "odbc32.dll"
integer Options相关选项。
返回值:integer ,成功时,返回0,失败返回值小于0。
函数功能:释放SQL语句句柄。
12、function integer SQLDataSources(long henv,int fdirection,refstring szdsn, integer cbdsnmax,ref integer pcbdsn,ref stringszdescription,integer cbdescriptionmax,ref integer pcbdescription)library "odbc32.dll"
function integer SQLFetch(long hstmt)library "odbc32.dll"
function integer SQLError(long lenv,long hdbc,long hstmt,ref string sqlstate,ref long nativeerror,ref string errormsg,integer errormsgmax,ref integer errormsglen)library "odbc32.dll"
ref long actlen可变。
返回值:integer ,成功时,返回0,失败返回值小于0。
函数功能:绑定结果集。
8、function integer SQLFetch(long hstmt)library"odbc32.dll"
参数:long hstmt SQL语句句柄
返回值:integer ,成功时,返回0,失败返回值小于0。
参数:long hstmt SQL语句句柄
ref string sztablequalifier表的qualifier名。
integer tablequalifierlen表的qualifier名的长度。
ref string szowner表的所有者名。
integer owerlen表的所有者名长度。
函数功能:绑定结果集。
9、function integer SQLError(long lenv,long hdbc,long hstmt,ref stringsqlstate,ref long nativeerror,ref string errormsg,integer errormsgmax,ref integer errormsglen)library "odbc32.dll"
ref string sztype,integer typelen)library "odbc32.dll"
function integer SQLColumns(long hstmt,ref string sztablequalifier,integer tablequalifierlen,ref string szowner,integer owerlen,ref string szname,integer namelen,
function integer SQLFreeEnv(long henv) library "odbc32.dll"
function integer SQLDataSources(long henv,int fdirection,ref string szdsn,&