数据库

本类阅读TOP10

·SQL语句导入导出大全
·SQL Server日期计算
·SQL语句导入导出大全
·SQL to Excel 的应用
·Oracle中password file的作用及说明
·MS SQLServer OLEDB分布式事务无法启动的一般解决方案
·sqlserver2000数据库置疑的解决方法
·一个比较实用的大数据量分页存储过程
·如何在正运行 SQL Server 7.0 的服务器之间传输登录和密码
·SQL中两台服务器间使用连接服务器

分类导航
VC语言Delphi
VB语言ASP
PerlJava
Script数据库
其他语言游戏开发
文件格式网站制作
软件工程.NET开发
脱离开发主机在其他电脑里独立运行PB程序

作者:未知 来源:月光软件站 加入时间:2005-2-28 月光软件站

我发现很多的同志不知道如何脱离自己的开发主机,在别人的计算机上独立运行。其实很简单,关键在于怎样在注册表中自动注册你的ASA数据源。
现在我把以前我发的帖子再发一次。希望对初学者有帮助!

大家用PB编好的程序,用安装软件(例如:InstallShile,InstallWais,Creatinstall等)安装打包后,在用户机上一使用就出现数据库没有连接等问题,原因就是我们没有在WINDOWS的注册表中注册我们的数据源。怎样注册呢?现在我来说一下:
首先我们用安装软件把我们的主运行文件要注册到注册表中的HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths里,在这里我的主应用程序是idmis.exe,数据库文件是wts.db。数据库是PB8自带的ASA 7数据库,原来的ASA 5数据库的文件和ASA 7不一样,要注意。

"注册表注册数据源"(w_regdatasorce)的OPEN事件:
string ls_keyname
string ls_valuename
string ls_value
int li_a,li_a1,li_a2,li_a3,li_a4,li_a5,li_a6,li_a7
string ls_DBdriver,ls_DBstart,ls_DBlocation,LS_wtslocation,ls_dbname,ls_db_dbeng7
//获取本软件的目录,并保存在ls_location里
registryGet("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\idmis.exe","Path",ls_wtslocation)
ls_DBdriver=LS_wtslocation+"\dbodbc7.dll"
ls_DB_dbeng7=LS_wtslocation+"\dbeng7.exe"
LS_DBNAME=LS_wtslocation+"\WTS.db"
ls_dbstart=LS_wtslocation+"\dbeng7.exe -d -c8m"
if not (fileexists(ls_DBdriver) and fileexists(ls_DB_dbeng7)) then
 messagebox("错误!","没有安装Sybase ASA 7数据库,或者没有数据库主控文件!",StopSign!)
 return
end if

//设置ODBC\ODBCINST.INI\ODBC DRIVERS
li_a=registrySet("HKEY_LOCAL_MACHINE\Software\ODBC\ODBCINST.INI\ODBC Drivers", &
      +"Sybase ASA 7(函授学生信息查询数据库文件)", &
      +RegString!,"Installed")
     
if li_a=-1 then
 messagebox("错误!","应用程序无法在注册表中设置ODBC DRIVERS,请与作者联系!",StopSign!)
 return
end if

//设置....ODBC\ODBCINST.INI
li_a1=registrySet("HKEY_LOCAL_MACHINE\Software\ODBC\ODBCINST.INI\Sybase ASA 7(函授学生信息查询数据库文件)", &
      +"CPTimeout",RegString!,"not pooled")
     
li_a2=registrySet("HKEY_LOCAL_MACHINE\Software\ODBC\ODBCINST.INI\Sybase ASA 7(函授学生信息查询数据库文件)", &
      +"Driver",RegString!,ls_DBdriver)
     
li_a3=registrySet("HKEY_LOCAL_MACHINE\Software\ODBC\ODBCINST.INI\Sybase ASA 7(函授学生信息查询数据库文件)", &
      +"Setup",RegString!,ls_DBdriver)

if li_a1=-1 or li_a2=-1 or li_a3=-1 then
 messagebox("错误!","应用程序无法设置注册表中ODBCINST.INI,请与作者联系!",StopSign!)
 return
end if

//设置ODBC DATA SOURCE(ODBC数据源),wts为数据源名称
li_a=registrySet("HKEY_LOCAL_MACHINE\Software\ODBC\ODBC.INI\ODBC Data Sources", &
      +"wts",RegString!,"Sybase ASA 7(函授学生信息查询数据库文件)")
     
if li_a=-1 then
 messagebox("错误!","应用程序无法设置注册表ODBC DATA SOURCE,请与作者联系!",StopSign!)
 return
end if

li_a=RegistrySet('HKEY_LOCAL_MACHINE\software\odbc\odbc.ini\wts','driver',RegString!,ls_DBdriver)
li_a1=RegistrySet('HKEY_LOCAL_MACHINE\software\odbc\odbc.ini\wts','start',RegString!,ls_dbstart)
li_a2=RegistrySet('HKEY_LOCAL_MACHINE\software\odbc\odbc.ini\wts','autostop',RegString!,'yes')
li_a3=RegistrySet('HKEY_LOCAL_MACHINE\software\odbc\odbc.ini\wts','DataBaseFile',RegString!,LS_DBNAME)
li_a4=RegistrySet('HKEY_LOCAL_MACHINE\software\odbc\odbc.ini\wts','DataBaseName',RegString!,'wts')
li_a5=RegistrySet('HKEY_LOCAL_MACHINE\software\odbc\odbc.ini\wts','EngineName',RegString!,'函授学生信息查询系统')
li_a6=RegistrySet('HKEY_LOCAL_MACHINE\software\odbc\odbc.ini\wts','PWD',RegString!,'sql')
li_a7=RegistrySet('HKEY_LOCAL_MACHINE\software\odbc\odbc.ini\wts','UID',RegString!,'dba')

IF li_a=-1 OR li_a2=-1 OR li_a3=-1 OR li_a4=-1 OR li_a1=-1 or li_a5=-1  or li_a6=-1  or li_a7=-1  THEN
Messagebox('错误','应用程序无法设置ODBC.INI,系统将终止运行!',StopSign!)
RETURN
END IF

如果你要设置用户级的ODBC连接请对下面的键值进行设置:
置'HKEY_current_user\software\odbc\ODBC.INI'
内容都是一样的。看看自己WINDOWS中的ODBC设置,有没有变化??
好人作到底!我在付上脱离环境后所需的.DLL文件:
pbvm8.dll  //PB虚拟机
pbdwe8.dll  //DW引擎
PBODB8.DLL  //ODBC配置文件
PBODB8.INF  //同上
DBODBC7.DLL  //数据库连接文件
DBENG7.EXE  //数据库启动文件。如果你是网络运行,那么就是DBSERV7.EXE
libjcc.dll  //我不知道  :-P
如果你有RICH TEXT对象控件,则: pbrtc.dll
如果你有OLE对象,则:pbole7.dll

好了没有,你成功了吗??




相关文章

相关软件