/****************************************************************************
** (c) 版权所有 IBM Corp. 2007 保留所有权利。
**
** 以下源代码示例("示例")属于国际
** 商业机器公司或其子公司之一(" IBM "),并且是
** 有版权和许可证,不得出售。 您可以使用、复制、修改和
** 在不向 IBM 付费的情况下,以任何形式分发样品,目的是
** 协助您开发应用程序。
**
** 示例代码是在 "原样 "的基础上提供给您的,不对以下方面作出保证
** 任何一种。 IBM 在此,本公司明确声明不作任何保证,无论是明示的还是
** 默示保证,包括但不限于以下默示保证
** 适销性和特定用途的适用性。 一些辖区确实
** 不允许排除或限制默示保证,因此上述
** 限制或排除条款可能不适用于您。 IBM SHALL NOT BE LIABLE FOR
** 您因使用、复制、修改或执行以下行为而遭受的任何损失
** 分发样品,即使 IBM 已被告知可能出现以下情况
** 此类损害赔偿。
*****************************************************************************
**
** 源文件名称: dbinfo.C
**
** 示例:在数据库级别设置和获取信息
**
** DB2 使用的应用程序接口:
** db2CfgGet -- 获取配置
** db2CfgSet -- 设置配置
**
** 使用的结构:
** sqlca
**
**
*****************************************************************************
**
** 有关示例程序的更多信息,请参阅 README 文件。
**
** 有关开发嵌入式 SQL 应用程序的信息,请参阅《开发嵌入式 SQL 应用程序》一书。
**
** 有关 DB2 API 的信息,请参阅《管理 API 参考》。
**
** 有关编程、编译和运行的最新信息 DB2
** 申请请访问 DB2 信息中心,网址为
** http://publib.boulder.ibm.com/infocenter/db2luw/v9r7/index.jsp
****************************************************************************/
#include <string.h>
#include <sqlutil.h>
#include <db2ApiDf.h>
#include <sqlenv.h>
#include " utilapi.h "
#if ((__cplusplus >= 199711L ) &&!定义了 DB2HP &&!定义了 DB2AIX )|| \
( DB2LINUX && ( __LP64__ || (__gnuc__ >= 3)) ) )
#include <iostream>
using namespace std;
#else
#include < iostream.h >
#endif
类 DbInfo
{
public:
int LocalOrRemoteDbConfigSetGet(char *);
int LocalOrRemoteDbConfigDefaultsSetGet(char *);
// 支持功能
int LocalOrRemoteDbConfigSave(db2Cfg );
int LocalOrRemoteDbConfigRestore(db2Cfg );
};
int DbInfo::LocalOrRemoteDbConfigSave(db2Cfg cfgStruct )
{
struct sqlca sqlca;
// 初始化 paramArray
cfgStruct.paramArray[0 ].flags = 0;
cfgStruct.paramArray[0 ].token = SQLF_DBTN_TSM_OWNER;
cfgStruct.paramArray[0 ].ptrvalue = 新字符[65];
cfgStruct.paramArray[1 ].flags = 0;
cfgStruct.paramArray[1 ].token = SQLF_DBTN_MAXAPPLS;
cfgStruct.paramArray[1 ].ptrvalue = new char[sizeof( sqluint16 )];
cout << "\n**** SAVE DB CONFIG. FOR:" << cfgStruct.dbname << " ****"
<< endl;
// 获取数据库配置
db2CfgGet(db2Version970, (void *)&cfgStruct, &sqlca);
DB2_API_CHECK( "DB Config. -- 保存");
return 0;
} //DbInfo::LocalOrRemoteDbConfigSave
int DbInfo::LocalOrRemoteDbConfigRestore(db2Cfg cfgStruct )
{
struct sqlca sqlca;
cout << "\n*** RESTORE DB CONFIG. FOR:" << cfgStruct.dbname << " ***"
<< endl;
// 设置数据库配置
db2CfgSet(db2Version970, (void *)&cfgStruct, &sqlca);
DB2_API_CHECK( "DB Config. -- 还原");
删除 [] cfgStruct.paramArray[0 ].ptrvalue;
删除 [] cfgStruct.paramArray[1 ].ptrvalue;
return 0;
} //DbInfo::LocalOrRemoteDbConfigRestore
int DbInfo::LocalOrRemoteDbConfigSetGet(char *dbAlias )
{
struct sqlca sqlca;
db2CfgParam cfgParameters[2];
db2Cfg cfgStruct;
cout << "\n-----------------------------------------------------------";
cout << ""\nUSE THE DB2 APIs:" << endl;
cout << " db2CfgGet -- GET CONFIGURATION" << endl;
cout << " db2CfgSet -- 设置配置" << endl;
cout << "TO SET/GET DATABASE CONFIGURATION PARAMETERS:" << endl;
// 初始化 cfgParameters
cfgParameters[0 ].flags = 0;
cfgParameters[0 ].token = SQLF_DBTN_TSM_OWNER;
cfgParameters[0 ].ptrvalue = 新字符[65];
cfgParameters[1 ].flags = 0;
cfgParameters[1 ].token = SQLF_DBTN_MAXAPPLS;
cfgParameters[1 ].ptrvalue = new char[sizeof( sqluint16 )];
// 设置两个数据库配置参数
strcpy( cfgParameters[0 ].ptrvalue, "tsm_owner");
*( sqluint16 *)( cfgParameters[1 ].ptrvalue) = 50;
cout << "\n Set database configuration parameters for the \""
<< dbAlias << "\" 数据库:" << endl;
cout << " TSM owner = " << cfgParameters[0 ].ptrvalue << endl;
cout << " maxappls = "
<< *( sqluint16 *)( cfgParameters[1 ].ptrvalue) << endl;
// 初始化 cfgStruct
cfgStruct.numItems = 2;
cfgStruct.paramArray = cfgParameters;
cfgStruct.flags = db2CfgDatabase | db2CfgDelayed;
cfgStruct.dbname = dbAlias;
// 设置数据库配置
db2CfgSet(db2Version970, (void *)&cfgStruct, &sqlca);
DB2_API_CHECK( "DB Config. -- 设置");
// 获取两个数据库配置参数
strcpy( cfgParameters[0 ].ptrvalue, "");
*( sqluint16 *)( cfgParameters[1 ].ptrvalue) = 0;
cout << " Get two database configuration parameters for the \""
<< dbAlias << "\" 数据库:" << endl;
// 获取数据库配置
db2CfgGet(db2Version970, (void *)&cfgStruct, &sqlca);
DB2_API_CHECK( "DB Config. -- 获取");
cout << " TSM owner = " << cfgParameters[0 ].ptrvalue << endl;
cout << " maxappls = " << *( sqluint16 *)( cfgParameters[1 ].ptrvalue)
<< endl;
// 释放已分配的内存
删除 [] cfgParameters[0 ].ptrvalue;
删除 [] cfgParameters[1 ].ptrvalue;
return 0;
} //DbInfo::LocalOrRemoteDbConfigSetGet
int DbInfo::LocalOrRemoteDbConfigDefaultsSetGet(char *dbAlias )
{
struct sqlca sqlca;
db2CfgParam cfgParameters[2];
db2Cfg cfgStruct;
cout << "\n-----------------------------------------------------------";
cout << ""\nUSE THE DB2 APIs:" << endl;
cout << " db2CfgSet -- 设置配置" << endl;
cout << " db2CfgGet -- GET CONFIGURATION" << endl;
cout << "TO SET/GET DATABASE CONFIGURATION DEFAULTS:" << endl;
// 初始化 cfgParameters
cfgParameters[0 ].flags = 0;
cfgParameters[0 ].token = SQLF_DBTN_TSM_OWNER;
cfgParameters[0 ].ptrvalue = 新字符[65];
cfgParameters[1 ].flags = 0;
cfgParameters[1 ].token = SQLF_DBTN_MAXAPPLS;
cfgParameters[1 ].ptrvalue = new char[sizeof( sqluint16 )];
// 设置所有数据库配置默认值
cout << "\n Set all database configuration defaults for the \""
<< dbAlias << "\" 数据库." << endl;
// 设置 cfgStruct
cfgStruct.numItems = 0;
cfgStruct.paramArray = NULL;
cfgStruct.flags = db2CfgDatabase | db2CfgReset | db2CfgDelayed;
cfgStruct.dbname = dbAlias;
// 重置数据库配置
db2CfgSet(db2Version970, (void *)&cfgStruct, &sqlca);
DB2_API_CHECK( "DB 配置默认值 - 设置");
// 获取两个数据库配置。 缺省值
strcpy( cfgParameters[0 ].ptrvalue, "");
*( sqluint16 *)( cfgParameters[1 ].ptrvalue) = 0;
cout << " Get two database configuration defaults for the \""
<< dbAlias << "\" 数据库:" << endl;
// 设置 cfgStruct
cfgStruct.numItems = 2;
cfgStruct.paramArray = cfgParameters;
cfgStruct.flags = db2CfgDatabase | db2CfgGetDefaults;
cfgStruct.dbname = dbAlias;
// 获取数据库配置默认值
db2CfgGet(db2Version970, (void *)&cfgStruct, &sqlca);
DB2_API_CHECK( "DB 配置默认值 -- 获取");
cout << " TSM owner = " << cfgParameters[0 ].ptrvalue << endl;
cout << " maxappls = " << *( sqluint16 *)( cfgParameters[1 ].ptrvalue)
<< endl;
// 释放已分配的内存
删除 [] cfgParameters[0 ].ptrvalue;
删除 [] cfgParameters[1 ].ptrvalue;
return 0;
} //DbInfo::LocalOrRemoteDbConfigDefaultsSetGet
int main(int argc, char *argv[])
{
int rc = 0;
CmdLineArgs 检查;
DbInfo 信息
Db db;
实例 inst;
db2CfgParam cfgParameters[2 ]; // 保存数据库配置。
db2Cfg cfgStruct;
// 检查命令行参数
rc = check.CmdLineArgsCheck3(argc, argv, db, inst);
如果 (rc!= 0)
{
return rc;
}
cout << ""\nTHIS SAMPLE SHOWS HOWS TO SET/GET INFO AT DATABASE LEVEL."
<< endl;
// 附加到本地或远程实例
rc = inst.Attach ();
如果 (rc!= 0)
{
return rc;
}
// 初始化 cfgStruct
cfgStruct.numItems = 2;
cfgStruct.paramArray = cfgParameters;
cfgStruct.flags = db2CfgDatabase | db2CfgDelayed;
cfgStruct.dbname = db.getAlias( );
// 保存数据库。 配置
rc = info.LocalOrRemoteDbConfigSave(cfgStruct );
如果 (rc!= 0)
{
return rc;
}
// 与 DB. 配置
rc = info.LocalOrRemoteDbConfigSetGet(db.getAlias( ));
rc = info.LocalOrRemoteDbConfigDefaultsSetGet(db.getAlias( ));
// 恢复数据库配置
rc = info.LocalOrRemoteDbConfigRestore(cfgStruct );
// 与本地或远程实例分离
rc = inst.Detach ();
如果 (rc!= 0)
{
return rc;
}
return 0;
}//main