|
1.版本
在ASE(Adapative Server Enterprise)11.0.3.3 for Linux中, 附带Sybase DB-Library For Linux
10.0.1.你可以查看$SYBASE/include/sybdb.h来获得它的版本号。
2.数据类型
Sybase DB-Library的C语言数据类型与ASE数据类型之间的对应 关系如下表所示: DB-Library(C) ASE DBTINYINT tinyint (1 byte integer) DBSMALLINT smallint (2 bytes integer) DBINT int (4 bytes integer) DBCHAR char (less than 255 chars) DBBINARY binary (less than 255 bytes) DBVARBIN varbinary (less than 255 bytes) DBBIT bit (0 or 1) DBFLT8 float (8 bytes float type) DBREAL real (4 bytes float type) DBNUMERIC numeric (2-17 bytes) DBDECIMAL decimal (2-17 bytes) DBMONEY money (8 bytes money type) DBMONEY4 smallmoney (4 bytes money type) DBDATETIME datetime (8 bytes datetime type) DBDATETIME4 smalldatetime(4 bytes datetime type)
3.常用数据结构
DBPROCESS LOGINREC
4.DB-Library 的数据库访问过程
1).连接SQL-Server. 首先调用dbinit来初始化DB-Library环境,再调用dblogin等函数分配 LOGINREC结构 DBPROCESS *dbproc; LOGINREC *login;
dbinit(); /* 初始化DB-Library环境 */ login=dblogin(); /* 分配LOGINREC结构 */ DBSETUSER(login,"sa"); /* 设置登录帐号 */ DBSERTPWD(login,"passwd"); /* 设置登录口令 */ dbproc=dbopen(login,"mydbname") /* 建立数据库连接, 返回DBPROCESS结构指针 */
2).命令处理 (1)命令添加函数dbcmd dbcmd(dbproc,"select * from user"); dbcmd(dbproc," where name='glzhang'"); dbcmd将sql command添加到命令缓冲区中。
(2) 命令执行函数dbsqlexec,dbsqlsend dbsqlexec(dbproc); 若执行失败则阻塞。若成功则调用dbresults函数来处理结果,
见后续章节。
dbsqlsend(dbproc); 传递sql后立即返回,可以使用dbsqlok(dbproc)来检查成功与否。
3) 结果集的处理 DB-Library 将select获得的数据集分成常规行和计算行两类。
一般的处理方法有下面几种: (a). 使用变量读取结果数据。 (b). 使用行缓冲方式处理结果行数据。 (c). 使用指针存取结果行数据。 由于篇幅所限,下面仅介绍使用变量读取结果数据的方法。
使用变量读取结果行数据的时候,应该首先检查dbresultes的返回值 是否为SUCCEED。如果返回成功,
则应该依次使用dbbind将常规结果列绑定到应用程序变量上, 用dbaltbind将计算结果列绑定到应用 程序变量上。然后再用dbnextrow来读取数据。
(1).绑定常规结果列。
RETCODE dbbind( PDBPROCESS dbproc, INT column, /* 变量所绑定结果列的列号 */ INT vartype, /* 应用程序变量的数据类型 */ DBINT varlen, /* varaddr缓冲区的长度 */ LPBYTE varaddr /* 应用程序变量地址 */ )
其中,vartype的取值为下表: DB-Library(C) vartype DBTINYINT TINYBIND DBSMALLINT SMALLBIND DBINT INTBIND DBCHAR CHARBIND,STRINGBIND,NTBSTRINGBIND DBBINARY BINARYBIND DBVARBIN VARBINBIND DBBIT BITBIND DBFLT8 FLT8BIND DBREAL FLT4BIND DBNUMERIC NUMERICBIND,SRCNUMERICBIND DBDECIMAL DECIMALBIND,SRCDECIMALBIND DBMONEY MONEYBIND DBMONEY4 SMALLMONEYBIND DBDATETIME DATETIMEBIND DBDATETIME4 SMALLDATETIBIND
上一篇:slab算法中gfporder怎么计算的?
下一篇:trubolinux双网卡不能工作问题
|