在一台没有安装过SQL SYBASE ANYWHERE 的机器需要配置注册表里的什么和需要什么文件才可脱离运行.doc
在一台没有安装过SQL SYBASE ANYWHERE 的机器需要配置注册表里的什么和需要什么文件才可脱离运行,
楼主hdyes(我是流氓,我怕谁,你是流氓,谁怕你)2003-08-27 23:12:35 在 PowerBuilder / 基础类 提问 在一台没有安装过SQL SYBASE ANYWHERE 的机器需要配置注册表里的什么和需要什么文件才可脱离运行,
PB已经可以运行的,就是在做安装程序时不知道要怎么才可以使到用户一去就可以运行, 问
点数:100、回复次数:6Top
1 楼chrisfy(K.O)回复于 2003-08-27 23:20:46 得分 20
需要配置注册表里的ODBC项(HKEY_CURRENT_USER\Software\ODBC与
HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\ODBC Data Sources),还要有必要的动态库文件与数据库引擎文件Top
2 楼hdyes(我是流氓,我怕谁,你是流氓,谁怕你)回复于 2003-08-27 23:32:11 得分 0 各位请帮忙啊~搞定后立即给分~Top
3 楼jerrymao(加菲猫,,抵制倭寇和高丽棒子)回复于 2003-08-28 00:07:33 得分 0 第一步:到一台安装过anywhere的机器上拷贝:\Program Files\Sybase\SQL Anywhere 8\win32目录下面的所有文件,其实其中有些是不必要的。
第二步:将这些文件拷贝到你自己的应用程序的某个目录下面,比如:dbeng目录。
第三步:判断是否注册过odbc,没有进行注册。函数附在下一个帖子上。
Top
4 楼jerrymao(加菲猫,,抵制倭寇和高丽棒子)回复于 2003-08-28 00:15:10 得分 80 //////////////////////////////////////////////////
////函 数 名 :f_odbc_config
////作 者 :Jerry
////时 间 :2002年1月9日
////作 用 :1.得到编译后的EXE运行路径
//// :2.配置编译后的EXE程序的Adaptive Server Anywhere 6.0的ODBC,
//// 无须安装Adaptive Server Anywhere 6.0
////前 提 :需将Adaptive Server Anywhere 6.0下面的WIN32目录下的几个文件
//// 拷入编译后的EXE所在目录
////传入参数 :1.ls_odbcname (string) 需要配置的ODBC的名字
//// :2.ls_dbname(string) 数据库DB的名字
////返 回 值 :[NONE]
////引用方法 :在应用的OPEN事件中引用此函数
////引用方式 :f_odbc_config(ls_odbcname,ls_dbname)在应用OPEN事件中引用
//////////////////////////////////////////////////
string ls_pathold=space(255)////旧路径
string ls_regkey ////注册表中的键值
string ls_temp
integer li_pos = 0
////<>0 为编译后, =0是在PB环境中
////需要声明API函数GetModuleFileNameA()
////Function uint GetModuleFileNameA(ulong hModule,ref string lpFilename,ulong nSize) Libr
ary "kernel32.dll"
//IF Handle(GetApplication()) <> 0 THEN GetModuleFileNameA(Handle(GetApplication()),gs_pat
h,255)
////////取出正确的路径值
//ls_temp = mid(gs_path,len(gs_path),1)
//DO while ls_temp <> '\'
// ls_temp = mid(gs_path,len(gs_path) - li_pos,1)
// li_pos ++
//loop
//gs_path = left(gs_path,len(gs_path) - li_pos + 1)//+'\'
gs_path="F:\你的源代码目录\"//////在编译时需要将这行代码屏蔽
////判断ODBC是否配置
RegistryGet("HKEY_LOCAL_MACHINE\Software\你想注册的键值
\Regkey","Regkey", RegString!,ls_regkey)
if ls_regkey="1" then////已经配置
////从注册表中读入配置,连接数据库实例
RegistryGet("HKEY_LOCAL_MACHINE\SOFTWARE\你想注册的键值
\DataBase","dbms",sqlca.dbms)
RegistryGet("HKEY_LOCAL_MACHINE\SOFTWARE\你想注册的键值
\DataBase","database",sqlca.database)
RegistryGet("HKEY_LOCAL_MACHINE\SOFTWARE\你想注册的键值\DataBase","userid",sqlca.userid)
RegistryGet("HKEY_LOCAL_MACHINE\SOFTWARE\你想注册的键值\DataBase","dbpass",sqlca.dbpass)
RegistryGet("HKEY_LOCAL_MACHINE\SOFTWARE\你想注册的键值\DataBase","logid",sqlca.logid)
RegistryGet("HKEY_LOCAL_MACHINE\SOFTWARE\你想注册的键值
\DataBase","LogPassWord",sqlca.logpass)
RegistryGet("HKEY_LOCAL_MACHINE\SOFTWARE\你想注册的键值
\DataBase","servername",sqlca.servername)
RegistryGet("HKEY_LOCAL_MACHINE\SOFTWARE\你想注册的键值
\DataBase","dbparm",sqlca.dbparm)
connect;
else////ODBC数据源没有配置
////配置ODBCINST
RegistryGet("HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI\ODBC Drivers","Adaptive
Server Anywhere 6.0",RegExpandString!,ls_regkey)
if f_str_isnull(ls_regkey) then
RegistrySet("HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI\ODBC Drivers","Adaptive
Server Anywhere 6.0",RegString!,"Installed")
else
RegistrySet("HKEY_LOCAL_MACHINE\SOFTWARE\你想注册的键值
\DataBase\ODBCINST.INI\ODBC Drivers","Adaptive Server Anywhere 6.0",RegString!,"Installed")
end if
////Adaptive Server Anywhere 6.0
////Driver
RegistryGet("HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI\Adaptive Server Anywhere 6.0","Driver",RegString!,ls_regkey)
if f_str_isnull(ls_regkey) then
RegistrySet("HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI\Adaptive Server Anywhere 6.0","Driver",RegString!,gs_path+"\dbeng\dbodbc6.dll")
RegistrySet("HKEY_LOCAL_MACHINE\SOFTWARE\你想注册的键值
\DataBase\ODBCINST.INI\Adaptive Server Anywhere 6.0","Driver",RegString!,ls_regkey)
else
RegistrySet("HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI\Adaptive Server Anywhere 6.0","Driver",RegString!,gs_path+"\dbeng\dbodbc6.dll")
RegistrySet("HKEY_LOCAL_MACHINE\SOFTWARE\你想注册的键值
\DataBase\ODBCINST.INI\Adaptive Server Anywhere 6.0","Driver",RegString!,ls_regkey)
end if
////Setup
RegistryGet("HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI\Adaptive Server Anywhere 6.0","Setup",RegString!,ls_regkey)
if f_str_isnull(ls_regkey) then
RegistrySet("HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI\Adaptive Server Anywhere 6.0","Setup",RegString!,gs_path+"\dbeng\dbodbc6.dll")
RegistrySet("HKEY_LOCAL_MACHINE\SOFTWARE\你想注册的键值
\DataBase\ODBCINST.INI\Adaptive Server Anywhere 6.0","Setup",RegString!,ls_regkey)
else
RegistrySet("HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI\Adaptive Server Anywhere 6.0","Setup",RegString!,gs_path+"\dbeng\dbodbc6.dll")
RegistrySet("HKEY_LOCAL_MACHINE\SOFTWARE\你想注册的键值
\DataBase\ODBCINST.INI\Adaptive Server Anywhere 6.0","Setup",RegString!,ls_regkey)
end if
////Adaptive Server Anywhere 6.0 Translator
////Driver
RegistryGet("HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI\Adaptive Server Anywhere 6.0 Translator","Driver",RegString!,ls_regkey)
if f_str_isnull(ls_regkey) then
RegistrySet("HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI\Adaptive Server Anywhere 6.0 Translator","Driver",RegString!,gs_path+"\dbeng\dbodtr6.dll")
RegistrySet("HKEY_LOCAL_MACHINE\SOFTWARE\你想注册的键值
\DataBase\ODBCINST.INI\Adaptive Server Anywhere 6.0 Translator","Driver",RegString!,ls_regkey)
else
RegistrySet("HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI\Adaptive Server Anywhere 6.0 Translator","Driver",RegString!,gs_path+"\dbeng\dbodtr6.dll")
RegistrySet("HKEY_LOCAL_MACHINE\SOFTWARE\你想注册的键值
\DataBase\ODBCINST.INI\Adaptive Server Anywhere 6.0 Translator","Driver",RegString!,ls_regkey)
end if
////Setup
RegistryGet("HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI\Adaptive Server Anywhere 6.0 Translator","Setup",RegString!,ls_regkey)
if f_str_isnull(ls_regkey) then
RegistrySet("HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI\Adaptive Server Anywhere 6.0 Translator","Setup",RegString!,gs_path+"\dbeng\dbodtr6.dll")
RegistrySet("HKEY_LOCAL_MACHINE\SOFTWARE\你想注册的键值
\DataBase\ODBCINST.INI\Adaptive Server Anywhere 6.0 Translator","Setup",RegString!,ls_regkey)
else
RegistrySet("HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI\Adaptive Server Anywhere 6.0 Translator","Setup",RegString!,gs_path+"\dbeng\dbodtr6.dll")
RegistrySet("HKEY_LOCAL_MACHINE\SOFTWARE\你想注册的键值
\DataBase\ODBCINST.INI\Adaptive Server Anywhere 6.0 Translator","Setup",RegString!,ls_regkey)
end if
////Translator
RegistryGet("HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI\Adaptive Server Anywhere 6.0 Translator","Translator",RegString!,ls_regkey)
if f_str_isnull(ls_regkey) then
RegistrySet("HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI\Adaptive Server Anywhere 6.0 Translator","Translator",RegString!,gs_path+"\dbeng\dbodtr6.dll")
RegistrySet("HKEY_LOCAL_MACHINE\SOFTWARE\你想注册的键值
\DataBase\ODBCINST.INI\Adaptive Server Anywhere 6.0 Translator","Translator",RegString!,ls_regkey)
else
RegistrySet("HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI\Adaptive Server Anywhere 6.0 Translator","Translator",RegString!,gs_path+"\dbeng\dbodtr6.dll")
RegistrySet("HKEY_LOCAL_MACHINE\SOFTWARE\你想注册的键值
\DataBase\ODBCINST.INI\Adaptive Server Anywhere 6.0 Translator","Translator",RegString!,ls_regkey)
end if
//////////////////////////////////////////////////
////配置实例ODBC
RegistrySet("HKEY_CURRENT_USER\SOFTWARE\ODBC\ODBC.INI\ODBC Data Sources",ls_odbcname,RegString!,"Adaptive Server Anywhere 6.0")Top
5 楼jerrymao(加菲猫,,抵制倭寇和高丽棒子)回复于 2003-08-28 00:15:25 得分 0
////配置自己的ODBC的信息
////HKEY_CURRENT_USER\
RegistrySet("HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\"+ls_odbcname,"AutoStop",RegStri
ng!,'yes')
RegistrySet("HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\"+ls_odbcname,"DatabaseFile",RegString!,gs_path+'\'+ls_dbname+'.db')
RegistrySet("HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\"+ls_odbcname,"DatabaseName",RegString!,'dictionary')
RegistrySet("HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\"+ls_odbcname,"Debug",RegString!,'No')
RegistrySet("HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\"+ls_odbcname,"Description",RegString!,"你想注册的键值")
RegistrySet("HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\"+ls_odbcname,"DisableMultiRowFetch",RegString!,"No")
RegistrySet("HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\"+ls_odbcname,"Driver",RegString!,gs_path+"\dbeng\dbodbc6.dll")
RegistrySet("HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\"+ls_odbcname,"EngineName",RegString!,'dictionary')
RegistrySet("HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\"+ls_odbcname,"Integrated",RegString!,'No')
RegistrySet("HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\"+ls_odbcname,"PWD",RegString!,'dictionary')
RegistrySet("HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\"+ls_odbcname,"Start",RegString!,gs_path + '\dbeng\dbeng6.exe -d -c8m')
RegistrySet("HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\"+ls_odbcname,"UID",RegString!,'dba')
////配置自己的数据源实例信息
RegistrySet("HKEY_LOCAL_MACHINE\SOFTWARE\你想注册的键值
\DataBase","Path",RegString!,gs_path)
RegistrySet("HKEY_LOCAL_MACHINE\SOFTWARE\你想注册的键值
\DataBase","Dbms",RegString!,'ODBC')
RegistrySet("HKEY_LOCAL_MACHINE\SOFTWARE\你想注册的键值
\DataBase","Database",RegString!,gs_path+'\'+ls_dbname)
RegistrySet("HKEY_LOCAL_MACHINE\SOFTWARE\你想注册的键值\DataBase","Userid",RegString!,'')
RegistrySet("HKEY_LOCAL_MACHINE\SOFTWARE\你想注册的键值\DataBase","Dbpass",RegString!,'')
RegistrySet("HKEY_LOCAL_MACHINE\SOFTWARE\你想注册的键值
\DataBase","Logid",RegString!,'dba')
RegistrySet("HKEY_LOCAL_MACHINE\SOFTWARE\你想注册的键值
\DataBase","LogPassWord",RegString!,'dictionary')
RegistrySet("HKEY_LOCAL_MACHINE\SOFTWARE\你想注册的键值
\DataBase","Servername",RegString!,'')
RegistrySet("HKEY_LOCAL_MACHINE\SOFTWARE\你想注册的键值
\DataBase","Dbparm",RegString!,"Connectstring='DSN="+ls_odbcname+"';UID=dba;PWD='你自己的密码'")
////将参数设为1
RegistrySet("HKEY_LOCAL_MACHINE\SOFTWARE\你想注册的键值
\Regkey","Regkey",RegString!,"1")
////从注册表中读入配置,连接数据库实例
RegistryGet("HKEY_LOCAL_MACHINE\SOFTWARE\你想注册的键值
\DataBase","dbms",sqlca.Dbms)
RegistryGet("HKEY_LOCAL_MACHINE\SOFTWARE\你想注册的键值
\DataBase","database",sqlca.database)
RegistryGet("HKEY_LOCAL_MACHINE\SOFTWARE\你想注册的键值\DataBase","userid",sqlca.userid)
RegistryGet("HKEY_LOCAL_MACHINE\SOFTWARE\你想注册的键值\DataBase","dbpass",sqlca.dbpass)
RegistryGet("HKEY_LOCAL_MACHINE\SOFTWARE\你想注册的键值\DataBase","logid",sqlca.logid)
RegistryGet("HKEY_LOCAL_MACHINE\SOFTWARE\你想注册的键值
\DataBase","LogPassWord",sqlca.logpass)
RegistryGet("HKEY_LOCAL_MACHINE\SOFTWARE\你想注册的键值
\DataBase","servername",sqlca.servername)
RegistryGet("HKEY_LOCAL_MACHINE\SOFTWARE\你想注册的键值
\DataBase","dbparm",sqlca.dbparm)
sqlca.autocommit = false
connect using sqlca;
end if
////判断数据库是否连接失败
if sqlca.sqlcode <> 0 then
return 0////返回不成功标记 0
end if
return 1////返回成功标记 1Top
6 楼netspies(从头再来)回复于 2003-08-28 17:27:33 得分 0
先up
然后请大家看看下面的问题