国产DM4数据库ODBC编程指南
DM4ODBC编程指南
本章结合DM4数据库的特点,比较全面系统的介绍ODBC的基本概念以及DM4 ODBC DRIVER的使用方法,以便用户更好地使用DM4 ODBC编写应用程序。
ODBC提供给你访问不同类型的数据库的途径。结构化查询语言SQL是一种用来访问数据库的语言。通过使用ODBC,应用程序能够使用相同的源代码和各种各样的数据库交互。这使得开发者不需要以特殊的数据库管理系统DBMS为目标,或者了解不同支撑背景的数据库的详细细节,就能够开发和发布客户/服务器应用程序。
DM4 ODBC3.0遵照Microsoft ODBC3.0规范设计与开发,实现了ODBC应用程序与DM4的互连接口。用户可以直接调用DM4 ODBC3.0接口函数访问DM4,也可以使用可视化编程工具如C++ Builder、PowerBuilder等利用DM4 ODBC3.0访问DM4。
在DM4客户端软件安装过程中,如果选择了安装ODBC驱动程序的相关选项,安装工具可完成将DM4 ODBC3.0驱动程序复制到硬盘,并在Windows注册表中登记DM4ODBC驱动程序信息的工作。
要进一步使用DM4 ODBC驱动程序,请阅读本章以了解ODBC数据源管理方法。
1 数据类型
客户程序可以通过SQLGetTypeInfo函数来获取DM4 ODBC3.0支持的数据类型信息。由SQLGetTypeInfo返回的数据类型是数据源所支持的数据类型,它们是预备用于DDL(DataDefinitionLanguage)语句的。
调用DM4 ODBC3.0的SQLGetTypeInfo,返回支持的数据类型如表1.1如下:
表1:数据类型列表
类型名 类型描述
char(n) 固定串长度为n的字符串,n<=8000
Varchar(n) 最大字符串长度为n的可变长度字符串,n<=8000
binary(n) 固定长度为n的二进制数据,n<=8000
varbinary(n) 最大长度为n的可变长度二进制数据,n<=8000
Image 影像数据类型,可变长度的二进制数据,最大长度为2G-1
Text 文本数据类型,可变长度的字符数据,最大长度为2G-1
Bit 单个二进制位数据
Tinyint 精度为3,刻度为0的有符号精确数字,取值范围-128…127
Smallint 精度为5,刻度为0的有符号精确数字,取值范围-32,768…32,767
Int 精度为10,刻度为0的有符号精确数字,取值范围-2[31]…2[31]-1
Bigint 精度为19,刻度为0的有符号精确数字值,取值范围-2[63]…2[63]-1
Real 二进制精度为24的有符号近似数字值,取值范围0或者绝对值为:10[-38]…10[38]
Float 二进制精度为53的有符号近似数字值,取值范围0或者绝对值为:10[-308]…10[308]
Double 二进制精度为53的有符号近似数字值,取值范围0或者绝对值为:10[-308]…10[308]
decimal(p,s) 精度为p,刻度为s的有符号精确数字值,1≤p≤53,s≤p
numeric(p,s) 精度为p,刻度为s的有符号精确数字值,1≤p≤38,s≤p
Money 精度固定为19,刻度固定为4的精确有符号数值
Date 日期数据类型,年月日字段,格式与Gregorian(罗马)日历一致
Time(p) 时间数据类型,时分秒字段,精度p指定了秒的精度
timestamp(p) 时间戳数据类型,年月日时分秒字段,精度p指定了秒的精度
intervalyear(p) 年间隔,即两个日期之间的年数字,p为时间间隔的首项字段精度(后面简称为:首精度)
intervalmonth(p) 月间隔,即两个日期之间的月数字,p为时间间隔的首精度
intervalyear(p)tomonth 年月间隔,即两个日期之间的年月数字,p为时间间隔的首精度
intervalday(p) 日间隔,即为两个日期/时间之间的日数字,p为时间间隔的首精度
intervalhour(p) 时间隔,即为两个日期/时间之间的时数字,p为时间间隔的首精度
intervalminute(p) 分间隔,即为两个日期/时间之间的分数字,p为时间间隔的首精度
intervalsecond(p,q) 秒间隔,即为两个日期/时间之间的秒数字,p为时间间隔的首精度,q为时间间隔秒精度
intervalday(p)tohour 日时间隔,即为两个日期/时间之间的日时数字,p为时间间隔的首精度
intervalday(p)to minute 日时分间隔,即为两个日期/时间之间的日时分数字,p为时间间隔的首精度
Intervalday(p)tosecond(q) 日时分秒间隔,即为两个日期/时间之间的日时分秒数字,p为时间间隔的首精度,q为时间间隔秒精度
Intervallhour(p)tominute 时分间隔,即为两个日期/时间之间的时分数字,p为时间间隔的首精度
intervalhour(p)tosecond(q) 时分秒间隔,即为两个日期/时间之间的时分秒数字,p为时间间隔的首精度,q为时间间隔秒精度
Intervalminute(p)tosecond(q) 分秒间隔,即为两个日期/时间之间的分秒间隔,p为时间间隔的首精度,q为时间间隔秒精度
注:要支持interval数据类型,必须在数据源中进行设置,否则将不提供对该类数据类型的支持。
2 支持的函数
客户程序可以通过SQLGetFunctions函数来获取DM4 ODBC3.0支持的函数信息。由SQLGetFunctions返回的函数列表是数据源所支持的函数。
以下按照类型分类列出了DM4ODBCx提供的函数。应用程序能够通过调用SQLGetFunctions来获得指定函数的支持信息。
1.连接到数据源
下面的函数用于连接到数据源:
(1)SQLAllocHandle:分配环境、连接、语句或者描述符句柄。
(2)SQLConnect:建立与驱动程序或者数据源的连接。访问数据源的连接句柄包含了包括状态、事务申明和错误信息的所有连接信息。
(3)SQLDriverConnect:与SQLConnect相似,用来连接到驱动程序或者数据源。但它比SQLConnect支持数据源更多的连接信息,它提 供了一个对话框来提示用户设置所有的连接信息以及系统信息表没有定义的数据源。
(4)SQLBrowseConnect:支持一种交互方法来检索或者列出连接数据源所需要的属性和属性值。每次调用函数可以获取一个连接属性字符串,当检索完所有的属性值,就建立起与数据源的连接,并且返回完整的连接字符串,否则提示缺少的连接属性信息,用户根据此信息重新输入连接属性值再次调用此函数进行连接。
2.获取驱动程序和数据源信息
下面的函数用来获取驱动程序和数据源信息:
(1)SQLDataSources:能够被调用多次来获取应用程序使用的所有数据源的名字。
(2)SQLDrivers:返回所有安装过的驱动程序清单,包括对它们的描述以及属性关键字。
(3)SQLGetInfo:返回连接的驱动程序和数据源的元信息。
(4)SQLGetFunctions:返回指定的驱动程序是否支持某个特定函数的信息。
(5)SQLGetTypeInfo:返回指定的数据源支持的数据类型的信息。
设置或者获取驱动程序属性
下面的函数用来设置或者获取驱动程序属性:
(1)SQLSetConnectAttr:设置连接属性值。
(2)SQLGetConnectAttr:返回连接属性值。
(3)SQLSetEnvAttr:设置环境属性值。
(4)SQLGetEnvAttr:返回环境属性值。
(5)SQLSetStmtAttr:设置语句属性值。
(6)SQLGetStmtAttr:返回语句属性值。
4.设置或者获取描述符字段
下面的函数用来设置或者获取描述符字段:
(1)SQLGetDescField:返回单个描述符字段的值。
(2)SQLGetDescRec:返回当前描述符记录的多个字段的值。
(3)SQLSetDescField:设置单个描述符字段的值。
(4)SQLSetDescRec:设置描述符记录的多个字段。
5.准备SQL语句
下面的函数用来准备SQL语句:
(1)SQLPrepare:准备要执行的SQL语句。
(2)SQLBindParameter:在SQL语句中分配参数的缓冲区。
(3)SQLGetCursorName:返回与语句句柄相关的游标名称。
(4)SQLSetCursorName:设置与语句句柄相关的游标名称。
(5)SQLSetScrollOptions:设置控制游标行为的选项。
6.提交SQL请求
下面的函数用来提交SQL请求:
(1)SQLExecute:执行准备好的SQL语句。
(2)SQLExecDirect:执行一条SQL语句。
(3)SQLNativeSql:返回驱动程序对一条SQL语句的翻译。
(4)SQLDescribeParam:返回对SQL语句中指定参数的描述。
(5)SQLNumParams:返回SQL语句中参数的个数。
(6)SQLParamData:与SQLPutData联合使用在运行时给参数赋值。
(7)SQLPutData:在SQL语句运行时给部分或者全部参数赋值。
7.检索结果集及其相关信息
下面的函数用来检索结果集及其相关信息:
(1)SQLRowCount:返回INSERT、UPDATE或者DELETE等语句影响的行数。
(2)SQLNumResultCols:返回结果集中列的数目。
(3)SQLDescribeCol:返回结果集中列的描述符记录。
(4)SQLColAttribute:返回结果集中列的属性。
(5)SQLBindCol:为结果集中的列分配缓冲区。
(6)SQLFetch:在结果集中检索下一行元组。
(7)SQLFetchScroll:返回指定的结果行。
(8)SQLGetData:返回结果集中当前行某一列的值。
(9)SQLSetPos:在取到的数据集中设置游标的位置。这个记录集中的数据能够刷新、更新或者删除。
(10)SQLBulkOperations:执行块插入和块书签操作,其中包括根据书签更新、删除或者取数据。
(11)SQLMoreResults:确定是否能够获得更多的结果集,如果能就执行下一个结果集的初始化操作。
(12)SQLGetDiagField:返回一个字段值或者一个诊断数据记录。
(13)SQLGetDiagRec:返回多个字段值或者一个诊断数据记录。
8.取得数据源系统表的信息
下面的函数用来取得数据源系统表的信息:
(1)SQLColumnPrivileges:返回一个关于指定表的列的列表以及相关的权限信息。
(2)SQLColumns:返回指定表的列信息的列表。
(3)SQLForeignKeys:返回指定表的外键信息的列表。
(4)SQLPrimaryKeys:返回指定表的主键信息的列表。
(5)SQLProcedureColumns:返回指定存储过程的参数信息的列表。
(6)SQLProcedures:返回指定数据源的存储过程信息的列表。
(7)SQLSpecialColumns:返回唯一确定某一行的列的信息,或者当某一事务修改一行的时候自动更新各列的信息。
(8)SQLStatistics:返回一个单表的相关统计信息和索引信息。
(9)SQLTablePrivileges:返回相关各表的名称以及相关的权限信息。
(10)SQLTables:返回指定数据源中表信息。
9.终止语句执行
下面的
Tags:国产,DM,数据库,ODBC,编程,指南

