****************************************************************************** * (c) 版权所有 IBM Corp. 2007 保留所有权利。 * * 以下源代码示例(以下简称 "示例")归 International 公司所有 * 商业机器公司或其子公司之一(" IBM "),并且是 * 版权和许可,不得出售。 您可以使用、复制、修改和 * 在不向 IBM 支付费用的情况下,以任何形式分发样品,目的是 * 协助您开发应用程序。 * * 本示例代码以 "原样 "提供给您,不作以下保证 * 任何一种。 IBM 在此,本公司明确声明不作任何保证,无论是明示的还是 * 默示保证,包括但不限于以下默示保证 * 适销性和特定用途的适用性。 一些辖区确实 * 不允许排除或限制默示保证,因此上述 * 限制或排除条款可能不适用于您。 IBM SHALL NOT BE LIABLE FOR * 您因使用、复制、修改或执行以下行为而遭受的任何损失 * 分发样品,即使 IBM 已被告知可能出现以下情况 * 此类损害赔偿。 * ****************************************************************************** * * C++ 示例的 README SunOS * * <install_path>/sqllib/samples/cpp 目录包含以下 README 文件 * 其中 <install_path> 是硬盘上 DB2 9.7 的位置。 * <install_path> 的默认位置是 $HOME。 * 本 README 介绍如何构建和运行用于 DB2 9.7 的 cpp 示例代码。 * * DB2 9.7 C++ 示例代码位于以下目录中: * <install_path>/sqllib/samples/cpp * * 建议您将该目录中的文件复制到您的 * 工作目录。 示样 * 在大多数平台上,程序目录通常是只读的 * 样本会生成临时文件。 * * 警告:其中一些示例可能会更改您的数据库或数据库管理器 * 配置。 仅针对 "测试 "数据库执行样本、 * 如 DB2 SAMPLE 数据库。 * * 注意:这些示例在使用 db2sampl 创建的示例数据库上进行了测试。 * ****************************************************************************** * * 准备 DB2 示例开发环境 * * 1) 将 sqllib/samples/cpp 中的文件复制到工作目录,然后 * 确保目录有写入权限。 * * 2) 使用以下命令启动数据库管理器: * db2start * * 3) 使用以下命令创建示例数据库: * db2sampl * * 4) 使用以下命令连接数据库: * db2 连接至样本 * * 5) 要创建存储过程和用户自定义函数,请确保 * 在 <install_path>/sqllib/function 上有写入权限 * 目录。 * * 6) cd 到包含步骤 1 中复制的文件的目录。 * ****************************************************************************** * * 建筑 DB2 样本 * * 构建 DB2 样本有两种方法:使用 make 工具或使用 * DB2 示例程序中包含的构建文件。 * o 使用 make 工具制作样本,请参阅 "使用 make 工具制作样本" * 使 UTILITY'。 * o 要使用构建文件构建样本,或当您没有 * 兼容的 make 工具,请参阅 "使用构建文件构建样本"。 * ****************************************************************************** * * *** 使用 nmake 工具构建样本 *** * * 如果系统中有兼容的 make 工具,可以使用 * 提供的 makefile。 另一种语言可以提供这种使 用功能 * 编者: 修改 PATH 变量,使其包含包含 * 制作实用工具。 * * 根据您的环境,可能需要修改 makefile。 * 详情请参阅 makefile 中的 "变量 "部分。 * * 在工作目录中执行相应的 "make "命令: * o make <程序名称> - 生成 <程序名称> 所标识的样本 * 名称>。文件扩展名 * 程序名称。 E.g. 生产 DbAuth * 有关任何依赖关系,请参阅各 * 样品 * o make srv - 仅构建可在 * 服务器,包括例程(存储过程 * 和用户自定义函数)。 * o make rtn - 仅构建例程。 * o make call_rtn - 只构建调用 * 例行公事。 * o make client_run - 只编译完全运行于 * 而不是调用例程)。 * o make all_client - 生成所有客户机样本(所有程序都在 * call_rtn "和 "client_run "类别)。 * o make all - 生成所有提供的示例程序 * * 注意:在运行 "make all "之前,先创建一个名为 SAMPLE2 的数据库 * 有些样本需要两个数据库。 创建第二个数据库 * 使用以下命令: * db2 connect reset -- 断开与样本数据库的连接。 * db2 create database -- 创建第二个数据库。 sample2 * db2 connect to sample -- 重新连接样本数据库。 * ****************************************************************************** * * *** 使用构建文件构建样本 *** * * 作为 makefile 的替代方案,与 DB2 * 示例可用于构建 CPP 示例程序。 * * 构建独立样本 * o bldapp <program_name> * <prog_name> - 样本程序的名称,不包括 * 任何扩展。 * 有关其他依赖关系,请参阅各个样本。 * * 构建和执行存储过程 * o 生成存储过程服务器,并将生成的二进制文件复制到 * 使用以下命令运行 sqllib/function 目录: * bldrtn <程序名 * <prog_name> - 样本程序的名称,不带任何 * 延长。 * o 使用以下命令编目存储过程: * spcat * o 使用以下命令创建存储过程客户端: * bldapp <程序名 * <prog_name> - 样本程序的名称,不带任何 * 延长。 * * 构建和执行用户自定义函数 * o 生成 UDF 服务器,并将生成的二进制文件复制到 * sqllib/function 目录,执行以下命令: * bldrtn <程序名 * <prog_name> - 样本程序的名称,不带任何 * 延长。 * o 使用以下命令编目用户自定义功能: * udfcat * o 使用以下命令创建 UDF 客户端: * bldapp <程序名 * <prog_name> - 样本程序的名称,不带任何 * 延长。 * ****************************************************************************** * * 常见文件说明 * * 以下是 C++ 示例的常用文件。 更多信息 * 有关这些文件的信息,请参阅程序源文件。 * ****************************************************************************** * * 常用文件 * * README - 此文件! * makefile - 用于制作大多数示例文件的 Makefile * ****************************************************************************** * * 外壳脚本 * * bldapp - 生成应用程序 * bldmc - 生成多连接应用程序 * bldmt - 生成多线程程序 * bldrtn - 建立例程(存储过程和 UDF) * embprep - 预编译和绑定嵌入式 SQL 程序 * ****************************************************************************** * * 样品设计 * * 大多数 C++ 示例程序的组织都反映了基于对象的 * 设计不同层次的 DB2。 样本的水平用 * 样本名称开头的两个字符标识符。 这些级别 * 显示了一个分层结构:一个应用程序可以访问不同的 * 一个实例可以有不同的数据库等。 以下是 DB2 * 的水平: * * 标识符 DB2 级别 * * 客户级别。 * 在实例级别。 * db 数据库级别。 * ts 表空间级别。 * tb 表层。 * dt 数据类型级别。 * ****************************************************************************** * * 其他样本 * * 除了按 DB2 级别设计组织的样本外,其他样本显示 * 特定类型的应用方法: * * 标识符应用方法 * * fn SQL 函数。 * sp 存储过程。 * ud 用户自定义函数。 * ****************************************************************************** * * C++ 示例说明 * * 以下是 DB2 随附的 C++ 示例文件。 更多信息 * 有关示例程序的信息,请参阅程序源代码 * 文件 * ****************************************************************************** * * 客户端级别(处理 DB2 客户端级别的程序文件 ) * * cli_info.C - 如何获取和设置客户级别信息。 * clisnap.C - 如何获取客户级别的快照。 * clisnapnew.C - 如何获取客户端级别的快照(使用 API)。 * ****************************************************************************** * * 实例级(处理 DB2 实例级的程序文件 ) * * inattach.C - 如何附加到实例或从实例中脱离。 * inauth.sqC - 如何在实例级别显示权限。 * ininfo.C - 如何获取和设置实例级信息。 * insnap.C - 如何获取实例级别的快照。 * insnapnew.C - 如何获取实例级别的快照(使用 API)。 * instart.C - 如何停止和启动当前本地实例。 * ****************************************************************************** * * 数据库级(在 DB2 中处理数据库对象的程序文件 ) * * dbauth.sqC - 如何在数据库级别授予/显示/撤销权限。 * dbcfg.sqC - 如何配置数据库和数据库管理器参数。 * dbconn.sqC - 如何连接和断开数据库。 * dbcreate.C - 如何创建和删除数据库。 * dbhistfile.sqC - 如何读取和更新数据库恢复文件条目。 * dbinfo.C - 如何获取和设置数据库级别的信息。 * dbinspec.sqC - 如何使用 * DB2 应用程序接口 db2Inspect * dblogconn.sqC - 如何使用 * 压缩和未压缩的数据库连接 * 表格 * dblognoconn.sqC - 如何异步读取数据库日志文件而无需 * 数据库连接 * dbmcon.sqC - 如何连接和断开多个数据库。 * dbmcon1.sqC - 多数据库程序 dbmcon 中使用的函数。 * dbmcon1.h - dbmcon1.sqC 的头文件。 * dbmcon2.sqC - 多数据库程序 dbmcon 中使用的函数。 * dbmcon2.h - dbmcon2.sqC 的头文件。 * dbupgrade.C - 如何升级数据库。 * dbpkg.sqC - 如何使用软件包。 * dbrestore.sqC - 如何从备份恢复数据库 * dbrollfwd.sqC - 如何在还原数据库后执行前滚操作 * dbsnap.C - 如何获取数据库级别的快照。 * dbsnapnew.C - 如何获取数据库级别的快照(使用 API)。 * dbthrds.sqC - 如何使用线程。 * dbuse.sqC - 如何使用数据库对象。 * ****************************************************************************** * * 表空间级(在 DB2 中处理表空间对象的程序文件 ) * * tscreate.sqC - 如何创建/删除缓冲池和表空间。 * ****************************************************************************** * * 表级(在 DB2 中处理表对象的程序文件 ) * * tbast.sqC - 如何使用暂存表更新延迟 AST * tbcompress.sqC - 如何创建带空值和默认值的表格 * 压缩选项 * tbconstr.sqC - 如何使用表格约束 * tbselcreate.db2 - 创建表格的 CLP 脚本 * tbseldrop.db2 - 删除表格的 CLP 脚本 * tbselinit - 首先调用 tbseldrop.db2 然后调用 * tbselcreate.db2. * tbcreate.sqC - 如何创建、更改和删除表。 * tbinfo.sqC - 如何获取和设置表格级别的信息。 * tbintrig.sqC - 如何使用代替触发器。 * tbmerge.sqC - 如何使用 MERGE 语句 * tbmod.sqC - 如何修改表格中的信息。 * tbmove.sqC - 如何移动桌子 * tbonlineinx - 如何在表上创建和重新组织索引 * tbpriv.sqC - 如何在表一级授予/显示/撤销权限。 * tbread.sqC - 如何读取表格中的信息 * tbreorg.sqC - 如何重组表格。 * tbrunstats - 如何对表格执行运行统计 * tbsavept.sqC - 如何使用外部保存点 * tbsel.sqC - 如何从插入、更新、删除中进行选择。 * tbtemp.sqC - 如何使用已声明的临时表 * tbtrig.sqC - 如何在表格中使用触发器。 * tbumqt.sqC - 如何使用用户生成的查询表(汇总表) * tbloadcursor.sqC - 如何使用 CURSOR 将数据加载到表格中? * 或 REMOTEFETCH 介质类型。 * ****************************************************************************** * * 数据类型级(处理数据类型的程序) * * dtlob.sqC - 如何读写 LOB 数据。 * dtstruct.sqC - 如何创建、使用和删除结构化类型的层次结构 * 和打字表格。 * dtudt.sqC - 如何创建/使用/删除用户定义的不同类型。 * ****************************************************************************** * * 函数级(演示 SQL 函数的程序文件) * * fnuse.sqC - 如何使用 SQL 函数 * ****************************************************************************** * * 存储过程级别(演示存储过程的程序文件) * * spcreate.db2 - 发布 CREATE PROCEDURE 语句的 CLP 脚本 * spdrop.db2 - 从目录中删除存储过程的 CLP 脚本 * spcat - CLP 脚本,首先调用 spdrop.db2 ,然后调用 * spcreate.db2. * spserver.exp - 导出文件。 * spclient.sqC - 客户端应用程序调用 * spserver.sqc. * spserver.sqC - 存储过程函数在服务器上构建和运行。 * ****************************************************************************** * * UDF 级(演示用户定义函数的程序文件) * * udfcli.sqC - 调用用户定义函数的客户端应用程序 * 于 udfsrv.C * udfemcli.sqC - 调用各种类型的嵌入式 SQL 用户定义 * 中的功能 udfemsrv.sqC * udfemsrv.sqC - udfemcli.sqC 调用的嵌入式 SQL 用户定义函数。 * udfemsrv.exp - udfemsrv 的导出文件 * udfsrv.C - 由用户定义的函数 ScalarUDF 调用 udfcli.sqC 样本 * udfsrv.exp - udfsrv 的导出文件 * ****************************************************************************** * * 通用实用功能文件 * * utilapi.C - 用于非嵌入式 SQL DB2 API 的错误检查实用程序文件 * 程序 * utilapi.h - 的头文件 utilapi.C * utilemb.sqC - 用于嵌入式 SQL 程序的错误检查实用程序文件。 * utilemb.h - 的头文件 utilemb.sqC * utilsnap.C - 快照监控程序 clisnap 的实用程序文件、 * clisnapnew, dbsnap, dbsnapnew, insnap, insnapnew * ****************************************************************************** * * 事件监测器样本 * * evm.sqC - 演示文件、管道和表格事件监控器 * ******************************************************************************