用IS5.0将数据库的DSN自动添加ODBC中
【打印文章】
安装程序自动将数据库DSN添加到ODBC中一般通过在注册表中添加
响应信息完成,分析以下注册表的相关内容。运行regedit可以观
察到注册表中层次关系如下:
HKEY_LOCAL_MACHINE
SOFTWARE
ODBC
ODBC.INI
C07
----在ODBC.INI下加入DSN的信息即可。
在此介绍一个例子程序,以供参考。
----本例子用目前流行的安装工具installshield 5.0
完成,数据库为Sybase SQL any Where,5.5;
应用程序开发工具为:Powerbuilder 6.5。
此方法已用到诸多程序中,由于此方法属于Windows
中ODBC和注册表的基本概念,可试用于其他程序。
----1 .Sybase SQL any Where 5.5 数 据 库 的 名 称:c07.db
----2 .Powerbuilder 数 据 库 连 接 程 序:
SQLCA.DBMS = “ODBC”
SQLCA.Database = “c07”
SQLCA.AutoCommit = True
SQLCA.DBParm = “ConnectString=‘DSN=c07;UID=dba;PWD=sql’”
----3 .installshielder5.0 的 程 序 片 段
----⑴ 定 义 头 文 件
----在 源 程 序 中 找 到 如 下 信 息:
// Include header file
#include “sdlang.h”
#include “sddialog.h”
//string defines //
#define UNINST_LOGFILE_NAME “Uninst.isu”
// 加 入 头 文 件 定 义 信 息, 第 一 段 程 序 开 始 点
#define UNINST_LOGFILE_NAME “Uninst.isu”
#define COMPANY_NAME “ODBC”
#define PRODUCT_NAME “ODBC.INI”
#define PRODUCT_VERSION “c07”
#define PRODUCT_KEY “rtdsk50.exe”
#define DEINSTALL_KEY“pb60_DeinstKey”
#define UNINSTALL_NAME“pb60_uninstname”
#define DEFAULT_LOG_PATH “pb60”
// 第 一 段 程 序 结 束 点
⑵ 定 义 全 局 变 量
在 程 序 中 找 到 如 下 信 息:
// ----- global variables ------
// generated
....
// your global variables
// 在 此 定 义 你 的 全 局 变 量, 第 二 段 程 序 开 始 点
STRING szstrname1,szstrvalue1,svlogfile;
STRING szstrname2,szstrvalue2;
STRING szstrname3,szstrvalue3;
STRING szstrname4,szstrvalue4;
STRING szstrname5,szstrvalue5;
STRING szstrname6,szstrvalue6;
STRING szstrname7,szstrvalue7;
STRING szstrname8,szstrvalue8;
NUMBER nvsize,nvType;
// 第 二 段 程 序 结 束 点
⑶ 注 册 表 修 改
程 序 中 找 到setrpregistry 函 数:
function SetupRegistry()
begin
//modify_source
// 加 入 注 册 表 信 息, 第 三 段 程 序 开 始 点
szstrname1 = “Agent”;
szstrvalue1 = “engine”;
szstrname2 = “AutoStop”;
szstrvalue2 = “Yes”;
szstrname3 = “DatabaseFile”;
//TARTGETDIR 为 全 局 变 量, 指 安 装 完 毕 后 程 序 的 路 径
szstrvalue3 = TARGETDIR ^“\\c07.db”;
szstrname4 = “DatabaseName”;
szstrvalue4 = “c07”;
szstrname5 = “Driver”;
szstrvalue5 = TARGETDIR ^“\\WOD50T.DLL”;
szstrname6 = “PWD”;
szstrvalue6 = “”;
szstrname7 = “Start”;
szstrvalue7 = TARGETDIR ^“\\rtdsk50.exe”;
szstrname8 = “UID”;
szstrvalue8 = “”;
// 注 册 表 入 口
RegDBSetDefaultRoot(HKEY_LOCAL_MACHINE);
// 生 成 注 册 表 信 息 的 各 级 分 支
InstallationInfo(COMPANY_NAME,PRODUCT_NAME,PRODUCT_VERSION,PRODUCT_K
EY);
DeinstallStart(DEFAULT_LOG_PATH,svlogfile,DEINSTALL_KEY,0);
// 向 注 册 表 的 分 支 中 加 入 键 名 和 键 值
RegDBSetAppInfo(szstrname1,REGDB_STRING,szstrvalue1,-1);
RegDBSetAppInfo(szstrname2,REGDB_STRING,szstrvalue2,-1);
RegDBSetAppInfo(szstrname3,REGDB_STRING,szstrvalue3,-1);
RegDBSetAppInfo(szstrname4,REGDB_STRING,szstrvalue4,-1);
RegDBSetAppInfo(szstrname5,REGDB_STRING,szstrvalue5,-1);
RegDBSetAppInfo(szstrname6,REGDB_STRING,szstrvalue6,-1);
RegDBSetAppInfo(szstrname7,REGDB_STRING,szstrvalue7,-1);
RegDBSetAppInfo(szstrname8,REGDB_STRING,szstrvalue8,-1);
// 第 三 段 程 序 结 束 点
return 0;
end;
----以上程序完成了将数据库的DSN自动添加到ODBC中的整个过程,
安装完毕后,不用手工添加,运行程序,即可成功连接数据库。
响应信息完成,分析以下注册表的相关内容。运行regedit可以观
察到注册表中层次关系如下:
HKEY_LOCAL_MACHINE
SOFTWARE
ODBC
ODBC.INI
C07
----在ODBC.INI下加入DSN的信息即可。
在此介绍一个例子程序,以供参考。
----本例子用目前流行的安装工具installshield 5.0
完成,数据库为Sybase SQL any Where,5.5;
应用程序开发工具为:Powerbuilder 6.5。
此方法已用到诸多程序中,由于此方法属于Windows
中ODBC和注册表的基本概念,可试用于其他程序。
----1 .Sybase SQL any Where 5.5 数 据 库 的 名 称:c07.db
----2 .Powerbuilder 数 据 库 连 接 程 序:
SQLCA.DBMS = “ODBC”
SQLCA.Database = “c07”
SQLCA.AutoCommit = True
SQLCA.DBParm = “ConnectString=‘DSN=c07;UID=dba;PWD=sql’”
----3 .installshielder5.0 的 程 序 片 段
----⑴ 定 义 头 文 件
----在 源 程 序 中 找 到 如 下 信 息:
// Include header file
#include “sdlang.h”
#include “sddialog.h”
//string defines //
#define UNINST_LOGFILE_NAME “Uninst.isu”
// 加 入 头 文 件 定 义 信 息, 第 一 段 程 序 开 始 点
#define UNINST_LOGFILE_NAME “Uninst.isu”
#define COMPANY_NAME “ODBC”
#define PRODUCT_NAME “ODBC.INI”
#define PRODUCT_VERSION “c07”
#define PRODUCT_KEY “rtdsk50.exe”
#define DEINSTALL_KEY“pb60_DeinstKey”
#define UNINSTALL_NAME“pb60_uninstname”
#define DEFAULT_LOG_PATH “pb60”
// 第 一 段 程 序 结 束 点
⑵ 定 义 全 局 变 量
在 程 序 中 找 到 如 下 信 息:
// ----- global variables ------
// generated
....
// your global variables
// 在 此 定 义 你 的 全 局 变 量, 第 二 段 程 序 开 始 点
STRING szstrname1,szstrvalue1,svlogfile;
STRING szstrname2,szstrvalue2;
STRING szstrname3,szstrvalue3;
STRING szstrname4,szstrvalue4;
STRING szstrname5,szstrvalue5;
STRING szstrname6,szstrvalue6;
STRING szstrname7,szstrvalue7;
STRING szstrname8,szstrvalue8;
NUMBER nvsize,nvType;
// 第 二 段 程 序 结 束 点
⑶ 注 册 表 修 改
程 序 中 找 到setrpregistry 函 数:
function SetupRegistry()
begin
//modify_source
// 加 入 注 册 表 信 息, 第 三 段 程 序 开 始 点
szstrname1 = “Agent”;
szstrvalue1 = “engine”;
szstrname2 = “AutoStop”;
szstrvalue2 = “Yes”;
szstrname3 = “DatabaseFile”;
//TARTGETDIR 为 全 局 变 量, 指 安 装 完 毕 后 程 序 的 路 径
szstrvalue3 = TARGETDIR ^“\\c07.db”;
szstrname4 = “DatabaseName”;
szstrvalue4 = “c07”;
szstrname5 = “Driver”;
szstrvalue5 = TARGETDIR ^“\\WOD50T.DLL”;
szstrname6 = “PWD”;
szstrvalue6 = “”;
szstrname7 = “Start”;
szstrvalue7 = TARGETDIR ^“\\rtdsk50.exe”;
szstrname8 = “UID”;
szstrvalue8 = “”;
// 注 册 表 入 口
RegDBSetDefaultRoot(HKEY_LOCAL_MACHINE);
// 生 成 注 册 表 信 息 的 各 级 分 支
InstallationInfo(COMPANY_NAME,PRODUCT_NAME,PRODUCT_VERSION,PRODUCT_K
EY);
DeinstallStart(DEFAULT_LOG_PATH,svlogfile,DEINSTALL_KEY,0);
// 向 注 册 表 的 分 支 中 加 入 键 名 和 键 值
RegDBSetAppInfo(szstrname1,REGDB_STRING,szstrvalue1,-1);
RegDBSetAppInfo(szstrname2,REGDB_STRING,szstrvalue2,-1);
RegDBSetAppInfo(szstrname3,REGDB_STRING,szstrvalue3,-1);
RegDBSetAppInfo(szstrname4,REGDB_STRING,szstrvalue4,-1);
RegDBSetAppInfo(szstrname5,REGDB_STRING,szstrvalue5,-1);
RegDBSetAppInfo(szstrname6,REGDB_STRING,szstrvalue6,-1);
RegDBSetAppInfo(szstrname7,REGDB_STRING,szstrvalue7,-1);
RegDBSetAppInfo(szstrname8,REGDB_STRING,szstrvalue8,-1);
// 第 三 段 程 序 结 束 点
return 0;
end;
----以上程序完成了将数据库的DSN自动添加到ODBC中的整个过程,
安装完毕后,不用手工添加,运行程序,即可成功连接数据库。
本栏文章均来自于互联网,版权归原作者和各发布网站所有,本站收集这些文章仅供学习参考之用。任何人都不能将这些文章用于商业或者其他目的。( Pfan.cn )
【编程爱好者论坛】