本书是SYBASE软件(北京)有限公司技术系列丛书之一。\r\n\r\n sybase Open Client是SYBAsE公司客户机方面的应用编程接口软件(API),它的功能是按照统一的规程实现客户对服务器的联接,它的作用是使客户机的应用程序和第三方的工具软件能够通过SQL命令或数据库RPC(远程过程调用)在整个网络上传递并发送给SYBASE SQL Server,或经Open Server发送给其他的服务器和数据源。本书系统地介绍了Client-Library的基本结构、编程步骤,以及怎样联接和发送命令给服务器,怎样使用存储过程、动态SQL语句和游标来处理数据结果。\r\n
\r\n
第一章 Client-Library概述 \r\n\r\n 1. 1 客户/服务器体系结构 \r\n\r\n 1. 1. 1 客户的种类(Types of Clients) \r\n\r\n 1. 1. 2 服务器的种类(Types of Servers) \r\n\r\n 1. 2 Open Client和Open Server产品 \r\n\r\n 1. 2. 1 SYBASE Open Client \r\n\r\n 1. 2. 2 SYBASE Open Server \r\n\r\n 1. 2. 3 Open Client和Open Server调用的编程接口 \r\n\r\n 1. 2. 4 Open Client函数库 \r\n\r\n 1. 3 SYBASE系统11的Open Client \r\n\r\n 1. 3. 1 SYBASE系统11 Open Client包括的产品 \r\n\r\n 1. 3. 2 Client-Library与DB-Library比较 \r\n\r\n 1. 4 环境设置 \r\n\r\n 1. 4. 1 接口(interfaces)文件 \r\n\r\n 1. 4. 2 环境变量 \r\n\r\n 1. 4. 3 locales.dat文件 \r\n\r\n 1. 5 查找一个SQL Server并使用isql与之连接 \r\n\r\n 1. 6 样例程序说明 \r\n\r\n 第二章 编程基础 \r\n\r\n 2. 1 头文件. 库文件. 编译文本 \r\n\r\n 2. 1. 1 头文件 \r\n\r\n 2. 1. 2 库文件 \r\n\r\n 2. 1. 3 编译文本 \r\n\r\n 2. 2 控制结构 \r\n\r\n 2. 2. 1 控制结构CS_CONIEXT, CS_CONNECTION, CS_COMMAND \r\n\r\n 2. 2. 2 三者的继承关系 \r\n\r\n 2. 2. 3 控制结构属性 \r\n\r\n 2. 3 数据类型 \r\n\r\n 2. 4 编写一个最简单的CT-Library的应用程序 \r\n\r\n 2. 4. 1 分配环境结构空间 \r\n\r\n 2. 4. 2 初始化函数库 \r\n\r\n 2. 4. 3 分配联接结构 \r\n\r\n 2. 4. 4 设置用户名及口令 \r\n\r\n 2. 4. 5 建立联接 \r\n\r\n 2. 4. 6 关闭联接 \r\n\r\n 2. 4. 7 释放环境结构空间 \r\n\r\n 2. 4. 8 例程说明 \r\n\r\n 第三章 向SQL Server发送命令 \r\n\r\n 3. 1 第二章中的样例程序介绍(分三个子过程) \r\n\r\n 3. 2 分配CS COMMAND结构, 向SQL Server发送命令 \r\n\r\n 3. 2. 1 分配CS COMMAND结构 \r\n\r\n 3. 2. 2 设置或读取CS COMMAND结构属性值 \r\n\r\n 3. 3 初始化. 发送. 执行命令 \r\n\r\n 3. 3. 1 命令的概念 \r\n\r\n 3. 3. 2 基本步骤 \r\n\r\n 3. 4 关闭联接. 释放资源 \r\n\r\n 3. 4. 1 关闭联接 \r\n\r\n 3. 4. 2 释放资源 \r\n\r\n 第四章 错误及消息处理 \r\n\r\n 4. 1 客户消息. 服务器消息和CS-Library消息 \r\n\r\n 4. 1. 1 客户消息 \r\n\r\n 4. 1. 2 服务器消息 \r\n\r\n 4. 1. 3 CS-Library消息 \r\n\r\n 4. 2 错误及消息处理的两种方式 \r\n\r\n 4. 3 定义安装回叫程序处理消息及错误信息 \r\n\r\n 4. 3. 1 定义客户消息回叫程序 \r\n\r\n 4. 3. 2 安装客户消息回叫程序 \r\n\r\n 4. 3. 3 定义服务器消息回叫程序 \r\n\r\n 4. 3. 4 安装服务器消息回叫程序 \r\n\r\n 4. 3. 5 定义CS-Library消息回叫程序 \r\n\r\n 4. 3. 6 安装CS-Library消息回叫程序 \r\n\r\n 4. 4 样例程序 \r\n\r\n 4. 4. 1 将三个回叫程序写入名为handler. c的文件 \r\n\r\n 4. 4. 2 修改编译文本 \r\n\r\n 4. 4. 3 修改主程序中init_db()子过程 \r\n\r\n 第五章 普通行的处理 \r\n\r\n 5. 1 概述 \r\n\r\n 5. 2 完成与Server的联接 \r\n\r\n 5. 2. 1 对于各种不同类型的结果, 建立switch循环 \r\n\r\n 5. 2. 2 ct_results()的参数 \r\n\r\n 5. 3 返回代码与结果类型 \r\n\r\n 5. 3. 1 返回代码与结果类型的图示 \r\n\r\n 5. 3. 2 关于某些结果类型 \r\n\r\n 5. 3. 3 关于返回代码 \r\n\r\n 5. 4 可读取的结果类型 \r\n\r\n 5. 4. 1 结果类型图示 \r\n\r\n 5. 4. 2 对于不同类型的结果采取的方法 \r\n\r\n 5. 5 不同的结果类型 \r\n\r\n 5. 5. 1 调用ct_results()处理命令产生的各个结果类型 \r\n\r\n 5. 5. 2 某些命令会产生多种结果类型 \r\n\r\n 5. 5. 3 进一步的例子 \r\n\r\n 5. 6 程序:不同的结果类型 \r\n\r\n 5. 7 流程图 \r\n\r\n 5. 8 得到列的个数 \r\n\r\n 5. 9 把列捆绑到变量 \r\n\r\n 5. 10 接收转换数据的缓冲区 \r\n\r\n 5. 11 转换不同的数据类型(普通的数据类型转换) \r\n\r\n 5. 12 CS DATAFMT结构 \r\n\r\n 5. 13 设置CS DATAFMT \r\n\r\n 5. 13. 1 映射到字符串 \r\n\r\n 5. 13. 2 映射到其他数据类型 \r\n\r\n 5. 14 程序:把列捆绑到程序变量 \r\n\r\n 5. 15 流程图 \r\n\r\n 5. 16 取数据 \r\n\r\n 5. 17 程序:取出并打印每一行 \r\n\r\n 5. 18 取消不需要的结果 \r\n\r\n 第六章 普通行的描述 \r\n\r\n 6. 1 得到结果集的信息 \r\n\r\n 6. 1. 1 得到简单'数字'信息 \r\n\r\n 6. 1. 2 用法 \r\n\r\n 6. 1. 3 ct_res_info()的参数 \r\n\r\n 6. 2 打印'涉及'的行数 \r\n\r\n 6. 3 得到结果集的信息 \r\n\r\n 6. 3. 1 调用ct_describe()得到结果集中列的某些特有信息 \r\n\r\n 6. 3. 2 ct_describe()把关于列的信息存入CS_DATAFMT \r\n\r\n 6. 3. 3 ct_describe()的参数 \r\n\r\n 6. 4 c ct_describe()设置CS_DATAFMT结构 \r\n\r\n 6. 4. 1 ct_describe()设置CS_DATAFMT结构 \r\n\r\n 6. 4. 2 CS_DATAFMT的描述 \r\n\r\n 6. 5 设置CS_DATAFMT的例子 \r\n\r\n 6. 5. 1 结果集的信息 \r\n\r\n 6. 5. 2 cs_describe()设置的CS_DATAFMT结构 \r\n\r\n 6. 5. 3 cstypes.h中描述数据类型的信息 \r\n\r\n 6. 6 建立CS_DATAFMT结构的数组 \r\n\r\n 6. 7 建立CS_DATAFMT结构的数组(续) \r\n\r\n 6. 7. 1 建立一个循环 \r\n\r\n 6. 7. 2 fprintf语句的结果 \r\n\r\n 6. 8 总结 \r\n\r\n 6. 9 程序:打印列名和结果 \r\n\r\n 6. 10 得到计算结果的信息 \r\n\r\n 6. 10. 1 举例 \r\n\r\n 6. 10. 2 概述 \r\n\r\n 6. 11 得到计算结果的信息(续一) \r\n\r\n 6. 11. 1 计算行的某些信息 \r\n\r\n 6. 11. 2 用法 \r\n\r\n 6. 11. 3 例子 \r\n\r\n 6. 11. 4 ct_compute_info()的参数 \r\n\r\n 6. 12 得到计算结果的信息(续二) \r\n\r\n 6. 12. 1 get_aggregate_name() \r\n\r\n 6. 12. 2 举例 \r\n\r\n 6. 13 程序:打印计算结果信息 \r\n\r\n 6. 14 更好地控制存取数据 \r\n\r\n 6. 15 ct_get_data() \r\n\r\n 6. 15. 1 用法 \r\n\r\n 6. 15. 2 参数 \r\n\r\n 6. 15. 3 目的 \r\n\r\n 6. 16 cs_convert() \r\n\r\n 6. 16. 1 用法 \r\n\r\n 6. 16. 2 参数 \r\n\r\n 第七章 运行存储过程 \r\n\r\n 7. 1 存储过程 \r\n\r\n 7. 2 存储过程的优点 \r\n\r\n 7. 3 存储过程的范例 \r\n\r\n 7. 4 处理存储过程特有的结果 \r\n\r\n 7. 4. 1 存储过程返回的特殊结果 \r\n\r\n 7. 4. 2 举例 \r\n\r\n 7. 4. 3 在循环中调用ct_results() \r\n\r\n 7. 5 返回代码和返回类型 \r\n\r\n 7. 5. 1 运行存储过程后的返回代码和结果类型 \r\n\r\n 7. 5. 2 在循环中调用ct_results() \r\n\r\n 7. 6 程序:处理输出参数和返回状态 \r\n\r\n 7. 7 SQL Server向SQL Server发送RPC \r\n\r\n 7. 7. 1 图示 \r\n\r\n 7. 7. 2 高效的通讯 \r\n\r\n 7. 7. 3 RPC命令 \r\n\r\n 7. 8 Client-Library向SQL Server发送RPC \r\n\r\n 7. 8. 1 图示 \r\n\r\n 7. 8. 2 RPC的优点 \r\n\r\n 7. 8. 3 Client-Library函数调用 \r\n\r\n 7. 9 RPC的优点 \r\n\r\n 7. 10 发送RPC命令的步骤 \r\n\r\n 7. 11 向SQL Server发送RPC信息(不带参数) \r\n\r\n 7. 12 向RPC信息增加参数 \r\n\r\n 7. 12. 1 利用ct_Param()发送所需数量的参数 \r\n\r\n 7. 12. 2 ct_param()的参数 \r\n\r\n 7. 13 对变量作数据类型转换 \r\n\r\n 7. 14 以'本来的'格式传送参数 \r\n\r\n 7. 14. 1 从字符到整型的转换 \r\n\r\n 7. 14. 2 从字符串转换到日期型 \r\n\r\n 7. 15 为cs_convert()得到context指针 \r\n\r\n 7. 16 总结 \r\n\r\n 7. 17 程序:RPC的一般处理过程 \r\n\r\n 第八章 动态SQL \r\n\r\n 8. 1 动态SQL的概述 \r\n\r\n 8. 1. 1 概述 \r\n\r\n 8. 1. 2 动态SQL与存储过程的比较 \r\n\r\n 8. 2 T-SQL与动态SQL的比较(以'insert'为例) \r\n\r\n 8. 2. 1 利用T-SQL重复执行insert \r\n\r\n 8. 2. 2 利用动态SQL重复执行insert \r\n\r\n 8. 3 动态SQL的三个阶段 \r\n\r\n 8. 4 准备SQL语句 \r\n\r\n 8. 5 执行SQL语句 \r\n\r\n 8. 6 释放SQL语句占用的资源 \r\n\r\n 8. 7 总结 \r\n\r\n 8. 8 程序:动态插入记录 \r\n\r\n 8. 9 动态SQL的其他功用 \r\n\r\n 第九章 只读游标 \r\n\r\n 9. 1 游标的概念 \r\n\r\n 9. 1. 1 什么是游标(cursors) \r\n\r\n 9. 1. 2 游标的基本操作 \r\n\r\n 9. 2 客户端游标和服务器端游标 \r\n\r\n 9. 2. 1 客户端(Client-side)游标 \r\n\r\n 9. 2. 2 服务器端(Server-side)游标 \r\n\r\n 9. 3 比较T-SQL语言游标和CT-Library中的游标 \r\n\r\n 9. 4 使用游标的优点 \r\n\r\n 9. 5 使用只读游标的基本步骤 \r\n\r\n 第十章 可修改游标 \r\n\r\n 10. 1 使用可修改游标的基本步骤 \r\n\r\n 10. 2 重定位游标的当前位置 \r\n\r\n 10. 3 重定位游标的基本步骤 \r\n\r\n 第十一章 读写文本/图像字段 \r\n\r\n 11. 1 文本/图像数据类型的存储方式 \r\n\r\n 11. 1. 1 什么是文本(text)/图像(image)数据类型 \r\n\r\n 11. 1. 2 文本/图像数据类型的存储方式 \r\n\r\n 11. 2 读取文本/图像字段的值 \r\n\r\n 11. 2. 1 CS_IODESC结构 \r\n\r\n 11. 2. 2 读取文本/图像字段的值 \r\n\r\n 第十二章 批数据拷贝 \r\n\r\n 12. 1 什么是BULK-Library/C \r\n\r\n 12. 2 使用BULK-Library/C编写批数据拷贝程序的两种数据流向 \r\n\r\n 12. 3 编写BULK-Libray/C应用程序前的准备工作 \r\n\r\n 12. 3. 1 头文件bkpublic.h. \r\n\r\n 12. 3. 2 修改编译脚本 \r\n\r\n 12. 3. 3 将数据库select into/bulkcopy'选项设为true \r\n\r\n 12. 4 编写批数据拷入程序的基本步骤 \r\n\r\n 附录A Sybase Open Client产品附带的样例程序 \r\n\r\n 附录B Client-Library应用的程序框架 \r\n\r\n 附录C DB-Library和Client-Library \r\n\r\n 附录D Client-Library. CS-Library和Bulk-Copy Library例程列表 \r\n
\r\n
本书以SYBASE公司标准培训教材“Open Client Using Client Library”为依据, 针对客户端编写接口软件的需要, 系统地介绍了如下内容:
·Client-Library的基本结构
·Client-Library程序编写步骤
·怎样向Server发送命令
·错误及消息的处理
·普通数据行的处理与描述
·存储过程的运行和动态SQL的执行
·只读游标和可修改游标
·读写文本/图像字段
·批数据拷贝
·一个贯串全文的样例程序
本书作者是国内最早的SYBASE用户之一——中国五金矿产进出口总公司信息中心的应用系统开发及维护人员, 曾开发了该公司在SYBASE上的多项信息管理系统, 并多次被SYBASE授权进行培训教学, 具有多年的SYBASE数据库产品开发和教学经验. 在编辑本书的过程中结合作者的经验, 在基本保持原教材写作风格的基础上, 对内容进行了必要的修改和补充, 并对书中的全部例题做了测试.
本书除作为Sybase Open Client应用开发指南外, 还可用作应用开发速查手册.
本书第一至四章和第九至十二章由阎晓青编写, 第五至八章由白占林编写, SYBASE公司的罗润升先生为本书编写了颇有实用价值的附录部分, 全书由朱晨炯负责统编.
最后, 要感谢SYBASE公司杨孝如先生的积极支持和提出的宝贵建议.
欢迎广大读者对本书提出宝贵的批评和修改意见.
作者
1997年7月香港回归之月
于中国五金矿产进出口总公司
无封面